AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken idhttp.get funktioniert nicht
Thema durchsuchen
Ansicht
Themen-Optionen

idhttp.get funktioniert nicht

Ein Thema von Tobinator · begonnen am 19. Aug 2011 · letzter Beitrag vom 20. Aug 2011
Antwort Antwort
Tobinator

Registriert seit: 18. Mai 2008
Ort: Cottbus
53 Beiträge
 
#1

idhttp.get funktioniert nicht

  Alt 19. Aug 2011, 19:44
Datenbank: mysql • Version: 5.0.91 • Zugriff über: php/Indy
Hi,


ich habe mir folgendes zusammengebastelt:

Delphi-Quellcode:
        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;
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.

leider funktioniert das nicht wie gewünscht:
idhttp.Get(s,f); 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.

Der Fehler muss dann also an dem idhttp.Get(s,f); liegen, oder?

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.
Tobias
  Mit Zitat antworten Zitat
Benutzerbild von Daniela.S
Daniela.S

Registriert seit: 1. Mär 2008
Ort: Niederösterreich
226 Beiträge
 
Delphi XE4 Enterprise
 
#2

AW: idhttp.get funktioniert nicht

  Alt 19. Aug 2011, 19:51
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.
  Mit Zitat antworten Zitat
Tobinator

Registriert seit: 18. Mai 2008
Ort: Cottbus
53 Beiträge
 
#3

AW: idhttp.get funktioniert nicht

  Alt 19. Aug 2011, 20:38
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?
Tobias
  Mit Zitat antworten Zitat
Tobinator

Registriert seit: 18. Mai 2008
Ort: Cottbus
53 Beiträge
 
#4

AW: idhttp.get funktioniert nicht

  Alt 19. Aug 2011, 22:51
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);
Tobias
  Mit Zitat antworten Zitat
Benutzerbild von geskill
geskill

Registriert seit: 17. Feb 2007
Ort: NRW
420 Beiträge
 
Delphi 2010 Professional
 
#5

AW: idhttp.get funktioniert nicht

  Alt 19. Aug 2011, 23:39
Hi,
probiers mal so:
Delphi-Quellcode:
myheader.AddObject('SQL', '', '', TStringStream.Create(sql, TEncoding.UTF8));
Id.Post('http://www.meine-url.de/Post.php',myheader);
Dadurch wird der SQL Wert in UTF-8 an den Server gesendet.

Grüße
Sebastian
  Mit Zitat antworten Zitat
Tobinator

Registriert seit: 18. Mai 2008
Ort: Cottbus
53 Beiträge
 
#6

AW: idhttp.get funktioniert nicht

  Alt 20. Aug 2011, 00:03
Danke, Danke, Danke!!!

Es funktioniert!

ich musste nur zwei parameter tauschen:

statt
myheader.AddObject('SQL', '', '', TStringStream.Create(sql, TEncoding.UTF8)); musste ich
myheader.AddObject('SQL', '', TStringStream.Create(sql, TEncoding.UTF8), ''); machen.

Aber es funktioniert!!
nochmal Danke
Tobias
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:16 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz