@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:
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
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:
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>
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.