Startseite
Hilfe-ForumFrageSuchenKontakt/Impressum

ForenForum
[gelöst] Versenden eines POST-Formulars simulieren
Von: qotsa **
am 11.04.2007


Hallo,

Könnt ihr mir ein einfaches Programm empfehlen, mit dem man POST-Daten an einen Server versendet. Ich will das Anklicken des Submit-Buttons eines Formulars simulieren und das Ergebnis, also die HTML-Datei, auf der Festplatte abspeichern.

Der Button, den man im Webbrowser anklicken müsste, um auf die nächste Seite zu kommen, sieht in etwa so aus:

<input name="Name" value="Wert" type="submit">

Theoretisch müsste ich ja nur die URL zum Beispiel mit wget aufrufen und zusätzlich noch Name=Wert als POST-Daten mitsenden. Leider bekomme ich es mit wget nicht hin.

Wär super, wenn mir das jemand anhand von einem Beispiel mal erklären könnte oder mir vielleicht ein Programm, das so was kann, empfehlen kann.

thx im Vorraus 

Antwort 1 von HCK *****
am 12.04.2007


http://www.computerhilfen.de/webmaster-hilfe.html
http://www.computerhilfen.de/hilfe-14.html
Da mal versuchen ....

Antwort 2 von JoSsiF *****
am 12.04.2007


Hi |

Also das einfachste Programm, was sowas kann, wäre telnet. Problem an der Sache ist: Du musst dir den HTTP-Header selber zusammenbauen und die Formdaten mitgeben. Ist aber nicht so riesig schwer, Google hilft da auch weiter: Klick!

Im Zweifelsfall oder bei mehr Wissensdurst einfach mal das RFC zu HTTP/1.1 durchschauen, auch wenn das lästige Arbeit ist Wink

greez Cool
JoSsiF

Antwort 3 von qotsa **
am 22.04.2007


Das ganze war viel einfacher als ich dachte. Mit wget funktioniert es auf diese Weise:

wget.exe -O output.htm --post-data <POST-Daten> <URL>

Mein Fehler war, dass ich um die Post-Daten Anführungszeichen gesetzt habe, so wie es auch in der Dokumentation seht.

Antwort 4 von JoSsiF *****
am 22.04.2007


Falls du sowas automatisieren oder das Ergebnis weiterverarbeiten willst, dann kannst du auch programmiertechnisch einiges machen. Hab das grad mal unter PHP mit der cURL-Extension probiert, geht hervorragend Smiley

Falls dich der Code interessiert, schreib nochmal.

greez Cool
JoSsiF

Antwort 5 von qotsa **
am 22.04.2007


Ja, würde mich auf jeden Fall interessieren!

Antwort 6 von JoSsiF *****
am 22.04.2007


Here we go:

Code:

<?php

$postData 
= array();
$postData['id'] = "00000";
$postData['vname'] = "einName";

$ch curl_init();

curl_setopt($chCURLOPT_URL"http://www.dieseite.de/dokument.php");
curl_setopt($chCURLOPT_RETURNTRANSFER1);
curl_setopt($chCURLOPT_POST1);
curl_setopt($chCURLOPT_POSTFIELDS$postData);
curl_setopt($chCURLOPT_HEADER0);

$response curl_exec($ch);
 
// Ausgabe der Response-Daten
echo $response

curl_close($ch);
?>



Antwort 7 von qotsa **
am 22.04.2007


Ich hab das mal lokal mit xampp ausprobiert. Leider erhalte ich diese Fehlermeldung:

Fatal error: Call to undefined function curl_init() in C:\Programme\xampp\htdocs\form.php on line 7

Im Verzeichnis C:\Programme\xampp\php\extensions liegt eine php_curl.dll.

Anscheinend reicht das nicht.

Sorry, bin in PHP noch Anfänger!

Antwort 8 von JoSsiF *****
am 22.04.2007


Das reicht leider nicht, bei dir ist cURL deaktiviert.

Du musst erstmal in der php.ini die cURL-Extension aktivieren (das Semikolon vor extension=php_curl.dll wegnehmen). Aufpassen, denn XAMPP hat mehrere php.ini. In der Standard-Konfiguration gilt die in xampp/apache/bin.

Dann musst du noch aus xampp/php die 2 Dateien libeay32.dll und ssleay32.dll nach {windir}/system32 kopieren. Dann Server neu starten, und es sollte funzen.

greez Cool
JoSsiF

Antwort 9 von qotsa **
am 22.04.2007


Danke!

Es funktioniert!