![]() |
Formulardaten mit IdHTTP.Post senden
Ziel Script login.php:
Code:
Zugehöriger Delphi Code:
<php
$username = htmlspecialchars($_POST['username']); if (isset($username)){ echo "Hallo $username. Wie geht es dir?"; } else{ echo "Variable nicht gesetzt"; } ?>
Delphi-Quellcode:
Schlagworte: Indy, HTTP, Post, Formular, Formular ausfüllen
procedure TForm4.Button1Click(Sender: TObject);
var data: TStringList; s: String; begin data := TStringList.Create; try data.Values['username'] := 'Erwin'; try s := IdHTTP1.Post('http://www.michael-puff.de/login.php', data); ShowMessage(s); except on E: Exception do ShowMessage('Fehler: ' + E.Message); end; finally data.Free; end; end; @Code Lib Manager: Wenn wir so was schon haben, kickt es in die Tonne. ;) |
Re: Formulardaten mit IdHTTP.Post senden
:shock:
![]() Edit:// Okay, ich will den Post so leer nicht stehen lassen. Auch wenn der PHP-Code offensichtlich nur ein Beispiel ist, so bitte ich doch darum, dort keine Sicherheitslücken einzubauen. Das Ausgaben der Variable $_POST['username'] kann in einer XSS-Attacke enden, die im schlimmsten Falle zur Kompromittierung eines Benutzeraccounts der entsprechenden Seite führen kann. Also bitte ein htmlspecialchars() um die Variable in Zeile 5! Liebe Grüße, Valle |
Re: Formulardaten mit IdHTTP.Post senden
Richtig, um den PHP Code ging es mir nicht.
|
Re: Formulardaten mit IdHTTP.Post senden
Okay, ihr dürft mich schlagen wenn ihr wollt, aber ich muss nochmal am eigentlich nur beispielhaften PHP-Code meckern. :mrgreen:
Die Variable $username ist immer gesetzt. Schließlich definierst du sie in Zeile 2 ja unabhängig vom Inhalt der _POST-Variable. Daher schlage ich einfach folgenden Code - mit fehlendem Fragezeichen im PHP-Tage - vor. ;-)
Code:
Ich hoffe ich bin nicht der einzige, der der Meinung ist, dass auch
<?php
if ($_POST['username']) { $username = htmlspecialchars($_POST['username']); echo "Hallo $username. Wie geht es dir?"; } else { echo "Variable nicht gesetzt"; } rhetorischer Beispielcode seine Richtigkeit haben darf... :duck: Liebe Grüße, Valle |
Re: Formulardaten mit IdHTTP.Post senden
Das Ganze wird später eh bereinigt, daher frage ich auch ganz kurz was dazu:
Ist "if ($_POST['username'])" sauber? Ich nutze immer "if (isset($_POST['username']))". Wäre $_POST['username'] = 0 (die Zahl Null), würde dein Beispiel Valle, nicht funktionieren, da die if-Abfrage "false" wird. Das Beispiel selbst finde ich für die CL gut geeignet. Aber ich stimme Valle zu, dass der Code sicher sein sollte. Nicht, dass es jemand falsch nachbaut. ;) |
Re: Formulardaten mit IdHTTP.Post senden
Zitat:
Ich habe den Code selbst geschrieben statt ihn von Luckie zu kopieren und dabei das isset vergessen. Zum Prüfen ob es gesetzt ist, ist isset() oder array_key_exists() geeignet. Oft ist strlen(trim(...)) > 0 aber sinnvoller, um auf eine nicht-leere Formulareingabe zu prüfen. In diesem Fall ist das aber egal. :-) Zitat:
Liebe Grüße, Valle |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:39 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-2025 by Thomas Breitkreuz