Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Html-Forms mit Indy (https://www.delphipraxis.net/100525-html-forms-mit-indy.html)

nobody0126 29. Sep 2007 14:56


Html-Forms mit Indy
 
hallo zusammen,
hab eine frage zu der indy komponente, lässt sich mit Indy eine mit namen bekannte Html Form ausfüllen und submitten?
zurzeit erledige ich das noch mit der TWebBrowser Komponente, da diese aber an den MS internet Explorer gebunden ist und
das genannte ausfüllen der Form nur ab iexplorer 7 funktioniert, würde ich gerne alles über Indy laufen lassen um
unabhängig von der Version des Betriebssystems arbeiten zu können.
gruß

Matze 29. Sep 2007 15:06

Re: Html-Forms mit Indy
 
Hallo,

ja, das geht mit TIdHTTP. Ich vermute, die Daten werden mittels "Post" übermittelt.

Delphi-Quellcode:
var
  SL: TStringList;
begin
  SL := TStringList.Create;
  try
    SL.Add('name=dein_nickname');
    SL.Add('password=dein_passwort');
    // ...
    IdHTTP1.Post('http://www...', SL);
  finally
    FreeAndNil(SL);
  end;
end;
Wobei "name" und "password" die Namen deiner Formularfelder darstellen. Du musst auch nicht unbedingt eine TStringList nutzen.
Über die Suche wärst du übrigens fündig geworden. ;)

The Lord 30. Sep 2007 21:55

Re: Html-Forms mit Indy
 
Hi ich habe auch mal eine Frage zu der POST Funktion.

Ich habe mir ein kleines Script erstellt, um eine Mail mit Hilfe von PHP eine Mail zu senden. Ich habe es nur zum testen erstellt und es steckt kein weiterer Sinn dahinter, als dass ich daran üben möchte.

Form

Code:
<form method="post" action="mail.php">
Ihr Name: <input type="text" name="name">


Ihre Nachricht: <textarea name="nachricht"></textarea>


<input type="submit" name="Button" value="Abschicken">
</form>
Jetzt verwende ich den oben genannten Code mit einer kleinen Änderung:
Delphi-Quellcode:
var
  SL: TStringList;
begin
  SL := TStringList.Create;
  try
    SL.Add('name=dein_nickname');
    SL.Add('password=dein_passwort');
    SL.Add('Button=Abschicken');
    // ...
    IdHTTP1.Post('http://www.nieronator.de/form/formular.php', SL);
  finally
    FreeAndNil(SL);
  end;
end;
Jedoch funktioniert das senden nicht. Wird der Submit-Button etwa nicht "gedrückt" oder muss das PHP Script auf der gleich Seite liegen, bzw. müssen die Variablen an das PHP gesendet werden, welches sich auf einer anderen Seite befindet? hier

Ich freue mich über jede Hilfe :)
Gruß Alex

LAWn-M0W3R 1. Okt 2007 05:00

Re: Html-Forms mit Indy
 
Wenn du den Namen der Seite kennst, kannst du ja einfach per ShellExecute deine Variablen weitergeben!
Das müsste in etwa so funktionieren:
Delphi-Quellcode:
uses ...ShellAPI;
-----------------------
...
ShellExecute(Application.Handle,'open','http://www.nieronator.de/form/mail.php?name=value&nachricht=value',nil,nil,SW_NORMAL);
...
Dürfte eigentlich nicht anders funktionieren als deine Indy-Komponente.
Haha, ich hab mir gerade nochmal deine Seite angesehen und festgestellt, dass du deine PHP-Variablen wahrscheinlich gar nicht richtig ausliest!
Aus Sicherheitsgründen kannst du auf Post-Variablen nicht mehr einfach mit dem selben Namen zugreifen, den du auch vorher verwendet hast, sondern musst sie aus dem $_REQUEST-Array auslesen:
Zitat:

if(isset($_REQUEST["name"]) and isset($_REQUEST["nachricht"])) {
echo 'name: '.$_REQUEST["name"];
echo 'nachricht: '.$_REQUEST["nachricht"]; }
Jetzt musst du nur noch rauskriegen, wie Leerzeichen und diese Späße in Post-Variablen codiert werden und dann ist dein Problem ohne zusätzliche Komponente gelöst!

Grüße
Max

The Lord 1. Okt 2007 11:19

Re: Html-Forms mit Indy
 
Aber ich wollte es eigentlich mit der INDY Komponente machen :(
Trotzdem probiere ich es nachher mal aus.

Gruß

The Lord 6. Okt 2007 17:39

Re: Html-Forms mit Indy
 
formular.php
Code:
<?php

echo "<form method=\"post\" action=\"mail.php?name=$name&nachricht=$nachricht\">";

?>

<form>

Ihr Name: <input type="text" name="name">




Ihre Nachricht: <textarea name="nachricht"></textarea>




<input type="submit" name="Button" value="Abschicken">

</form>


mail.php
Code:


<?PHP

echo "Sie haben folgende Angaben gemacht:
";

echo "Ihr Name: $_POST[name]
";

echo "Ihre Nachricht $_POST[nachricht]";

mail("form@nieronator.de","Nachricht von $_POST[name]",$_POST[nachricht]);

?>
Ist den das PHP Script richtig?

Matze 6. Okt 2007 17:42

Re: Html-Forms mit Indy
 
Das gehört aber nicht zu diesem Delphi-Thema. Deine erste Anlaufstelle sollte php.net sein, denn da findest du das meiste. Auch einige Beispiele, die deine Frage beantworten.

Ich würde auch generell $_POST['name'] schreiben, doch wie gesagt, das gehört nicht hier her.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:49 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