![]() |
Datenbank: mysql • Version: 5.0.91 • Zugriff über: php/Indy
idhttp.get funktioniert nicht
Hi,
ich habe mir folgendes zusammengebastelt:
Delphi-Quellcode:
in sql steht ein UPDATE-Statement (in diesem Beispiel, später auch Insert und Delete). Das ganze wird an eine PHP-Datei (Post.php) gesendet und soll von dort aus in eine mysql-Datenbank gespeichert werden.
sql:=ReplaceStr(sql,'=','%3D');
sql:=ReplaceStr(sql,' ','%20'); f:=TStringStream.Create; s:='http://www.meine-url.de/Post.php?SQL='+sql; try idhttp.Get(s,f); except on E:Exception do showmessage(E.Message); end; f.SaveToFile('result.txt'); f.Free; leider funktioniert das nicht wie gewünscht:
Delphi-Quellcode:
wirft eine Exception (eidconnclosedgracefully), wenn ich aber den Wert von s speichere und direkt in Firefox eingebe, dann wird alles korrekt ausgeführt. Das Update-Statement wird korrekt zurück-übersetzt ('%20' ->' '; '%3D'->'=') und auch korrekt eingefügt.
idhttp.Get(s,f);
Der Fehler muss dann also an dem
Delphi-Quellcode:
liegen, oder?
idhttp.Get(s,f);
PS: Ich muss gestehen, das ich von Indy noch nicht so viel ahnung habe und mir da nur provisorisch was zusammengebastelt habe. Vllt. ist der Fehler für euch ja offensichtlich... Danke schonmal und viele Grüße Tobi. |
AW: idhttp.get funktioniert nicht
Achtung: Aus Sicherheitsgründen ist das Selbstmord! SQL Injektion ist eine der einfachsten Möglichkeiten einen WebServer samt Datenbank in die ewigen Jagdgründe zu schicken. Ein Angreifer kann dir so ganz leicht Befehle unterjubeln.
Du solltest dir überlegen nur Parameter zu übergeben, diese auch auf Gültigkeit prüfen und den SQL Befehl erst im php script erstellen. Eventuell verschlüsselt oder per https. |
AW: idhttp.get funktioniert nicht
Ja, das habe ich mir auch gedacht, das soll auch nur eine Übergangslösung sein. Das Problem ist nur, das das Programm bis nächtes Woche so einigermaßen funktionieren soll (ist nur für mich privat, nichts für einen Kunden oder so). Und da ich das Wochenende über kaum Zeit haben werde und unter der Woche kein Internet zu probieren habe, kann ich es erstmal nur so lösen.
Das ganze wird natürlich so schnell wie möglich geändert. Ich fange auch gerade erst an mit Netzwerk-/Internetprogrammierung. Aber bis ich es dann richtig machen kann, müsste diese version erstmal funktionieren. Kann mir da jemand helfen? |
AW: idhttp.get funktioniert nicht
Ok, ich habs jetzt vorerst über idhttp.post gelöst.
Jetzt macht er nur aus Straße Stra?e. Wie kann ich das ändern?
Delphi-Quellcode:
myheader.AddFormField('SQL',sql);
Id.Post('http://www.meine-url.de/Post.php',myheader); |
AW: idhttp.get funktioniert nicht
Hi,
probiers mal so:
Delphi-Quellcode:
Dadurch wird der SQL Wert in UTF-8 an den Server gesendet.
myheader.AddObject('SQL', '', '', TStringStream.Create(sql, TEncoding.UTF8));
Id.Post('http://www.meine-url.de/Post.php',myheader); Grüße |
AW: idhttp.get funktioniert nicht
Danke, Danke, Danke!!!
Es funktioniert! ich musste nur zwei parameter tauschen: statt
Delphi-Quellcode:
musste ich
myheader.AddObject('SQL', '', '', TStringStream.Create(sql, TEncoding.UTF8));
Delphi-Quellcode:
machen.
myheader.AddObject('SQL', '', TStringStream.Create(sql, TEncoding.UTF8), '');
Aber es funktioniert!! nochmal Danke :D |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:40 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz