POST
- unix
- Beiträge: 361
- Registriert: 15.02.2005 19:25
- Wohnort: Zwischen Coburg und Bamberg :-)
- Kontaktdaten:
POST
Hi habe folgendes Problem also hab eine Webseite gebaut mit Login das mit Sesson und coocie arbeitet.
Nun will ich aus dieser Seite eine ToDo liste auslesen und zwar von einem Lokalen Programm und diese auch lokal bearbeiten und wieder abspiechern.
Hat jemand eine ahnung wie mann sowas macht mann müsste ja dann eig. ne Art webbrowser entwickeln
Nun will ich aus dieser Seite eine ToDo liste auslesen und zwar von einem Lokalen Programm und diese auch lokal bearbeiten und wieder abspiechern.
Hat jemand eine ahnung wie mann sowas macht mann müsste ja dann eig. ne Art webbrowser entwickeln
Hier steht normalerweise die Putzfrau drin,
die hat aber Urlaub.
MfG : Unix
die hat aber Urlaub.
MfG : Unix
- KeyKon
- Beiträge: 1412
- Registriert: 10.09.2004 20:51
- Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit) - Wohnort: Ansbach
- Kontaktdaten:
Wenn du die Site selber gebaut hast is mir schleierhaft wiso dus so umständlich machst, lass die cookies weg und Arbeite mit GET, dann kannste ganz simpel die HTTP-Lib nutzen, wenns doch Post sein soll musste dir den Request wohl oder übel selber basteln, so in der Art:
Code: Alles auswählen
request$ = "POST /script.php HTTP/1.1" + #CRLF$
request$ + "Host: www.site.com" + #CRLF$
request$ + "User-Agent: PB" + #CRLF$
request$ + "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" + #CRLF$
request$ + "Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3" + #CRLF$
request$ + "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7" + #CRLF$
request$ + "Keep-Alive: 300" + #CRLF$
request$ + "Connection: keep-alive" + #CRLF$
request$ + "Referer: www.bla.com" + #CRLF$
request$ + "Content-Type: application/x-www-form-urlencoded" + #CRLF$
request$ + "Content-Length: 6" + #CRLF$ + #CRLF$
request$ + "id=123"
(\/) (°,,,°) (\/)
- unix
- Beiträge: 361
- Registriert: 15.02.2005 19:25
- Wohnort: Zwischen Coburg und Bamberg :-)
- Kontaktdaten:
Das problem ist das die ToDo liste nicht für jeden bearbeitbar sein soll ausserdem bassiert die Seite auf nen code der später für alle verfügbar sein soll baue ein cmsKeyKon hat geschrieben:Wenn du die Site selber gebaut hast is mir schleierhaft wiso dus so umständlich machst, lass die cookies weg und Arbeite mit GET, dann kannste ganz simpel die HTTP-Lib nutzen, wenns doch Post sein soll musste dir den Request wohl oder übel selber basteln, so in der Art:
und hab von request 0 ahnung kann zwar php aber davon echt 0plan
aber wenn ihr meint das das echt schwer ist werd ich vl. auf ner datenbank gehen die nicht nur von localhost verwendbar ist
Hier steht normalerweise die Putzfrau drin,
die hat aber Urlaub.
MfG : Unix
die hat aber Urlaub.
MfG : Unix
@KeyKon
Dein "Request" ist ja ziemlicher Murks. Du benutzt client- und serverseitige Attribute in einem Header. Die Leerzeile, die Header und Body trennt, fehlt.
Mit einem Cookie kann man sehr wohl mehr Daten als mit GET übertragen. In meinem JavaScript Buch, das mitlerweile in die Jahre gekommen ist, steht bereits, dass Cookies bis zu 4 KB groß sein dürfen. Heutzutage geht da einiges mehr.
Dagegen gebe ich dir Recht, das Login-System durch das sicherere IP/SessID-System zu ersetzen. Das ist außerdem eleganter.
@ unix:
Das einfachste und sicherste ist ein simples Passwortsystem. Dazu legst du in deinem PHP-Script ein Passwort fest, was nur derjenige kennt, der die ToDo-List auch abholen darf. Sagen wir das Passwort ist "abc123".
Es ist egal, ob du es per GET oder POST machst, aber nur, wenn du kein WebGadget() zum Abholen der Liste benutzt. Dann würde die URL nämlich im Verlauf des Browsers (meist IE) landen und jeder könnte es lesen. Machst du alles manuell mit ReceiveNetworkData() und SendNetworkData(), ist es egal.
Ich werde hier aber dennoch auf die POST-Methode zurückgreifen.
Es sind nur 3 Schritte:
Sende im ersten Schritt einen GET-Header, um die Liste ganz normal wie ein Besucher herunterzuladen:Beachte die abschließende Leerzeile, die muss da rein. Bei Content-Length schreibst du die deiner gesendeten Daten im Body in Bytes rein. Ich nutze meist HTTP/1.0 statt 1.1, da der Server in 1.1 sonst das Chunked-Encoding verfahren anwendet, was die Auswertung der Antwort zwar nicht erschwert, aber aufwändiger macht.
//
Nachtrag: Dies könntest du auch einfacher mit ReceiveHTTPFile() machen.
Zweitens: Bearbeite die Liste lokal.
Drittens: Eine hochgeladene Liste wird nur angenommen, wenn das Passwort mit überliefert wird und stimmt. Das machen wir jetzt per POST:Du liest in PHP wie gewohnt die GET-Variable "passwort" ein. Du kannst dies in PureBasic auch mit Base64, CRC32 verschlüsseln, um wenigstens ein einfaches Mitlesen in Echtzeit zu erschweren. Das ist nützlich, wenn dein Request durch einen Proxy geht oder wenn jemand im Netzwerk einen Netzwerksniffer laufen lässt. Wenn du ganz sicher sein willst, sende einen SHA- oder MD5-Hash. Dann kann man dein Passwort nicht zurückverfolgen. Das nützt aber nur begrenzt, z. B. wenn sich das Passwort nach einem Download immer ändert oder aus meheren Daten (z. B. Benutzername und Passwort) besteht, denn sont ist das Passwort immer gleich. Dann reicht es einem Hacker, auch den Hash als Passwort zu benutzen, ohne das eigentliche Passwort zu kennen.
Dann liest du in deinem PHP-Script die Eingabe vom stdin aus. Das ist nämlich die hochgeladene Liste, die du damit ausliest. Wie großdie in Bytes ist, wird in der Umgebungsvariable CONTENT_LENGTH übermittelt und kann auch mit PHP ausgelesen werden. Ich weiß es, obwohl ich kaum PHP kann; kann dir also keinen Code dafür liefern. Außerdem kannst du den User-Agent auslesen, der ist zwar manipulierbar, aber den kennt ja auch keiner. Der User-Agent dient dazu, dass das Senderprogramm seinen Namen mitsende und ist nur zu Informationszwecken. (Aber bitte nicht alleine auf den User-Agent verlassen, da minupulierbar. Eer stellt nur einen zusätzlichen Hinweis auf die Authenzität deines Programms dar.)
Ich hoffe, du hast alles verstanden. Ich habe diesen Post erst in der falschen Reihenfolge geschrieben und keine Lust, das jetzt noch korrekturzulesen. Wenn du Fragen zu den Einzelnen Headern hast, frag ruhig.
Dein "Request" ist ja ziemlicher Murks. Du benutzt client- und serverseitige Attribute in einem Header. Die Leerzeile, die Header und Body trennt, fehlt.
Mit einem Cookie kann man sehr wohl mehr Daten als mit GET übertragen. In meinem JavaScript Buch, das mitlerweile in die Jahre gekommen ist, steht bereits, dass Cookies bis zu 4 KB groß sein dürfen. Heutzutage geht da einiges mehr.
Dagegen gebe ich dir Recht, das Login-System durch das sicherere IP/SessID-System zu ersetzen. Das ist außerdem eleganter.
@ unix:
Das einfachste und sicherste ist ein simples Passwortsystem. Dazu legst du in deinem PHP-Script ein Passwort fest, was nur derjenige kennt, der die ToDo-List auch abholen darf. Sagen wir das Passwort ist "abc123".
Es ist egal, ob du es per GET oder POST machst, aber nur, wenn du kein WebGadget() zum Abholen der Liste benutzt. Dann würde die URL nämlich im Verlauf des Browsers (meist IE) landen und jeder könnte es lesen. Machst du alles manuell mit ReceiveNetworkData() und SendNetworkData(), ist es egal.
Ich werde hier aber dennoch auf die POST-Methode zurückgreifen.
Es sind nur 3 Schritte:
Sende im ersten Schritt einen GET-Header, um die Liste ganz normal wie ein Besucher herunterzuladen:
Code: Alles auswählen
GET /ordner/abholen.php HTTP/1.0
Host: www.domain.com
User-Agent: Name deines Programms 1.0
Accept: text/html,text/plain,text/*;q=0.8,*/*;q=0.5
Connection: keep-alive
//
Nachtrag: Dies könntest du auch einfacher mit ReceiveHTTPFile() machen.
Zweitens: Bearbeite die Liste lokal.
Drittens: Eine hochgeladene Liste wird nur angenommen, wenn das Passwort mit überliefert wird und stimmt. Das machen wir jetzt per POST:
Code: Alles auswählen
POST /ordner/upload.php?passwort=abc123 HTTP/1.0
Host: www.domain.com
User-Agent: Name deines Programms v1.0
Content-Type: text/plain
Content-Length: size_in_bytes
<Ab hier kommt die Liste im Klartext, unverschlüsselt>
Dann liest du in deinem PHP-Script die Eingabe vom stdin aus. Das ist nämlich die hochgeladene Liste, die du damit ausliest. Wie großdie in Bytes ist, wird in der Umgebungsvariable CONTENT_LENGTH übermittelt und kann auch mit PHP ausgelesen werden. Ich weiß es, obwohl ich kaum PHP kann; kann dir also keinen Code dafür liefern. Außerdem kannst du den User-Agent auslesen, der ist zwar manipulierbar, aber den kennt ja auch keiner. Der User-Agent dient dazu, dass das Senderprogramm seinen Namen mitsende und ist nur zu Informationszwecken. (Aber bitte nicht alleine auf den User-Agent verlassen, da minupulierbar. Eer stellt nur einen zusätzlichen Hinweis auf die Authenzität deines Programms dar.)
Ich hoffe, du hast alles verstanden. Ich habe diesen Post erst in der falschen Reihenfolge geschrieben und keine Lust, das jetzt noch korrekturzulesen. Wenn du Fragen zu den Einzelnen Headern hast, frag ruhig.
PB 4.30
Code: Alles auswählen
Macro Happy
;-)
EndMacro
Happy End
- unix
- Beiträge: 361
- Registriert: 15.02.2005 19:25
- Wohnort: Zwischen Coburg und Bamberg :-)
- Kontaktdaten:
Naja zum Teil habe ich es verstanden nur wie ich es umsetzte kp wer trotzdem noch lusst hat mir auf die Sprünge zu helfen
das ist die Webseite im bau:
delphin-software.de
lege euch nen login an
User: pbhelp
Pass: pbhelp
auserdem bin ich TS
IP: tft-esports.eu:8888 Pass gibt es keines nur nen Prefix im nickname mit 'pb_' wäre cool
will nur mal schaun ob er sich automatisch einloggen und div. änderungen im admin machen kann da noch keine ToDo existiert wird noch gecodet.
Übrigens dieses cms wird es wenns fertig ist teils 4free geben wer sich dafür interessiert
das ist die Webseite im bau:
delphin-software.de
lege euch nen login an
User: pbhelp
Pass: pbhelp
auserdem bin ich TS
IP: tft-esports.eu:8888 Pass gibt es keines nur nen Prefix im nickname mit 'pb_' wäre cool
will nur mal schaun ob er sich automatisch einloggen und div. änderungen im admin machen kann da noch keine ToDo existiert wird noch gecodet.
Übrigens dieses cms wird es wenns fertig ist teils 4free geben wer sich dafür interessiert
Hier steht normalerweise die Putzfrau drin,
die hat aber Urlaub.
MfG : Unix
die hat aber Urlaub.
MfG : Unix
Warum aktualisiert sich die Seite alle 500 Millisekunden?
Kann da so keine ToDo-Liste entdecken.
// edit:
Dafür ist ein META-REFRESH-Tag verantwortlich, mitten im Body des HTML-Code:Weg damit! Außerdem gehören META-Tags in den Head eines Dokuments.
Wenn du das gelernt hast, darfst du dich wieder diesem Problem widmen.
Kann da so keine ToDo-Liste entdecken.
// edit:
Dafür ist ein META-REFRESH-Tag verantwortlich, mitten im Body des HTML-Code:
Code: Alles auswählen
<meta http-equiv="refresh" content="0; index.php5?site=checklogin&view=content&login=false" />
Wenn du das gelernt hast, darfst du dich wieder diesem Problem widmen.
PB 4.30
Code: Alles auswählen
Macro Happy
;-)
EndMacro
Happy End
- unix
- Beiträge: 361
- Registriert: 15.02.2005 19:25
- Wohnort: Zwischen Coburg und Bamberg :-)
- Kontaktdaten:
weis zwar nicht wo du das gesehen hasst aber solch code verwende ich zur automatischer weiterleitung nicht zum refreshen solltest warten bis er fertig geladen hat da dieses script recht komplex gebaut istAND51 hat geschrieben:Warum aktualisiert sich die Seite alle 500 Millisekunden?
Kann da so keine ToDo-Liste entdecken.
// edit:
Dafür ist ein META-REFRESH-Tag verantwortlich, mitten im Body des HTML-Code:Weg damit! Außerdem gehören META-Tags in den Head eines Dokuments.Code: Alles auswählen
<meta http-equiv="refresh" content="0; index.php5?site=checklogin&view=content&login=false" />
Wenn du das gelernt hast, darfst du dich wieder diesem Problem widmen.
[EDIT] und wegen ToDo habe ich ja geschrieben das die noch gemacht wird
[EDIT]weis was das ist die weiterleidung zum temp das dir den loginstatus anzeigt login ok oder falsch usw
Zuletzt geändert von unix am 12.06.2009 17:38, insgesamt 1-mal geändert.
Hier steht normalerweise die Putzfrau drin,
die hat aber Urlaub.
MfG : Unix
die hat aber Urlaub.
MfG : Unix
> weis zwar nicht wo du das gesehen hasst
Nach dem EInloggen kam ich auf eine Art Startseite. Links das Menü "Profil editieren", "Admin" usw. und rechts: Nichts.
Er hat halt immer sofort refreshed. Es heißt übrigens immer Meta-Refresh, auch wenn du es zur Witerleitung benutzt.
Dass er refreshed, hab ich vermutet, weil ich immer auf die gleiche Seite geleitet wurde und nicht woanders hin.
Nach dem EInloggen kam ich auf eine Art Startseite. Links das Menü "Profil editieren", "Admin" usw. und rechts: Nichts.
Er hat halt immer sofort refreshed. Es heißt übrigens immer Meta-Refresh, auch wenn du es zur Witerleitung benutzt.

Dass er refreshed, hab ich vermutet, weil ich immer auf die gleiche Seite geleitet wurde und nicht woanders hin.
PB 4.30
Code: Alles auswählen
Macro Happy
;-)
EndMacro
Happy End
-
- Beiträge: 6291
- Registriert: 29.08.2004 08:37
- Computerausstattung: Hoffentlich bald keine mehr
- Kontaktdaten:
Die Adresse muss absolut sein! Ansonsten funktioniert es z.B. im Internet Explorer nicht und es lädt immer dieselbe Seite neu.unix hat geschrieben:weis zwar nicht wo du das gesehen hasst aber solch code verwende ich zur automatischer weiterleitung nicht zum refreshen solltest warten bis er fertig geladen hat da dieses script recht komplex gebaut istAND51 hat geschrieben:Warum aktualisiert sich die Seite alle 500 Millisekunden?
Kann da so keine ToDo-Liste entdecken.
// edit:
Dafür ist ein META-REFRESH-Tag verantwortlich, mitten im Body des HTML-Code:Weg damit! Außerdem gehören META-Tags in den Head eines Dokuments.Code: Alles auswählen
<meta http-equiv="refresh" content="0; index.php5?site=checklogin&view=content&login=false" />
Wenn du das gelernt hast, darfst du dich wieder diesem Problem widmen.
[EDIT] und wegen ToDo habe ich ja geschrieben das die noch gemacht wird
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.