Post Befehl für PHP
stefan d
- php
Für einen Versand wertet mein Script Forumulardaten aus und sollte sie dann, anstatt sie per E-Mail zu versenden, an ein anderes Script posten.
Mit Perl funktioniert das über
use HTTP::Request::Common qw(POST);
weis jemand wie das in PHP funktioniert?
alle variablen, die von eiem formular versendet werden stecken in der globalen variable $_POST bzw $_GET je nach dem, welche methode dein form benutzt.
du kannst dann mit zB. $_POST[var] auf die einzelnen variablen zugreifen.
tipp:
mit echo implode('<br>', $_POST)."<br>";
kannst du dir ausgeben lassen welche variablen übergeben wurden.
mfg
phase
Für einen Versand wertet mein Script Forumulardaten aus und sollte sie dann, anstatt sie per E-Mail zu versenden, an ein anderes Script posten.
Mit Perl funktioniert das über
use HTTP::Request::Common qw(POST);weis jemand wie das in PHP funktioniert?
achso:
mit
header("Location: dein_script.php?post=$_POST");
kannst du die daten an dein script "posten"
in diesem beispiel musst du dann natürlich mit $post[var] auf deine variablen zugreifen.
mfg
phase
alle variablen, die von eiem formular versendet werden stecken in der globalen variable $_POST bzw $_GET je nach dem, welche methode dein form benutzt.
du kannst dann mit zB. $_POST[var] auf die einzelnen variablen zugreifen.
tipp:
mit echo implode('<br>', $_POST)."<br>";
kannst du dir ausgeben lassen welche variablen übergeben wurden.mfg
phase
Ok, vielen Dank,
ich werde das mal so versuchen.
hallo noch mal,
also so wie ich das geschrieben hab geht es leider nicht.
du kannst ein array nicht an eine url anhängen.
vorher musst du es in eine zeichenkette umwandeln.
so müsste es gehen:
$string = implode("-", $_POST);//alle mit POST übergebenen variablen in zeichenkette umwandeln.
header("Location: auswerten.php?post=$string");//zeichenkette an script weiterleiten
$post = explode("-",$_GET['post']);//zeichenkette in Array zerlegen
echo $post[0]." ".$post[1]." ".$post[2];//Array ausgeben
wenn es nicht ganz so viele formulardaten sind kann man es so machen, ansonsten hab ich noch nen link für dich:
24.2. Wie kann ich einen HTTP POST-Request absenden?
http://www.dclp-faq.de/q/q-code-post.html
mfg
phase
und noch was:
wenn du es so machst dann solltest du den string mir urlencode() umwandeln:
$string = implode("-", $_POST);//alle mit POST übergebenen variablen in zeichenkette umwandeln.
$string= urlencode($string);//Zeichenkette so um, dass sie in einer URL verwendet werden kann
header("Location: auswerten.php?post=$string");//zeichenkette an script weiterleiten
und dann wieder mit urldecode:
$post = urldecode($_GET[post]);//Zeichenkette wieder entschlüsseln
$post = explode("-",$_GET['post']);//zeichenkette in Array zerlegen
echo $post[0]." ".$post[1]." ".$post[2];//Array ausgeben
mfg
phase
$string = implode("-", $_POST);//alle mit POST übergebenen variablen in zeichenkette umwandeln.
$string= urlencode($string);//Zeichenkette so um, dass sie in einer URL verwendet werden kann
ok, diesen Befehl kannte ich bisher nicht, das könnte einiges Vereinfachen, danke
eleganter ist das ganze natürlich wenn du sessions benutzt.
das könnte dann so aussehen:
formular:
<body>
<?php
@session_start();
if (isset($_POST['submit']))
{
$string = implode("-", $_POST);
$_SESSION['POST'] = $string;
// HTTP-Redirect zu der Ausgabeseite
header("Location: http://" . $_SERVER['SERVER_NAME']
. "auswerten.php");
exit;
}
?>
<FORM action="<?php $_SERVER['PHP_SELF'] ?>" method="post">
<!--
Hier ganz viele Radiobuttons, Checkboxen und Inputfelder
-->
<INPUT type="submit" name="submit">
</FORM>
</form>
</body>
und das auswerte sript dann so:
<?php
@session_start();
$post = explode("-",$_SESSION['POST']);
echo implode("<br>", $post)."<br>";
?>
mfg
phase
also so wie ich das geschrieben hab geht es leider nicht.
das habe ich dann auch gemerkt und versucht die Felder einzeln zu übergeben. Viele waren es nicht, aber das Problem ist, dass zwischenräume enthalten sind. Hinzu kommt dass dann kein '&' oder '+' enthalten sein darf weil PHP diese auswertet.
Ausserdem hatte ich Probleme mit den Zeilen umbrüchen
http://www.dclp-faq.de/q/q-code-post.html
das sieht interessant aus, ich werde diese Methode ausprobieren.
Ich glaube du hast mich falsch verstanden, das auslesen der Daten ist nicht das Problem. Sie sollen dann aber an ein anderes Script weitergepostet werden. Und das weis ich nicht wie es funktioniert.
Das Script soll einfach die Daten an ein anderes Script weiterposten, so eine Art Zwischenstufe zwischen dem Forumlar und dem Script das die Daten dann benötigt.
alle variablen, die von eiem formular versendet werden stecken in der globalen variable $_POST bzw $_GET je nach dem, welche methode dein form benutzt.
du kannst dann mit zB. $_POST[var] auf die einzelnen variablen zugreifen.
tipp:
mit echo implode('<br>', $_POST)."<br>";
kannst du dir ausgeben lassen welche variablen übergeben wurden.mfg
phase
Hallo!
Für einen Versand wertet mein Script Forumulardaten aus und sollte sie dann, anstatt sie per E-Mail zu versenden, an ein anderes Script posten.
Mit Perl funktioniert das über
use HTTP::Request::Common qw(POST);weis jemand wie das in PHP funktioniert?
Da giht es mehrer Möglichkeiten, richtet sich auch danach wie Du den Request weiterleiten willst, ob GET oder POST.
fsockopen(), urlencode() und urldecode() kennst Du ja bereits. Ich würde es entweder machen indem ich den gesamten $_POST-Array serializiere mit serialize() (http://php3.de/manual/de/function.serialize.php), also sowas der Art
header("Location: http://www.server.tld/script.php?data=".urlencode(serialize($_POST)));
und dann im endgültigen Script dann mit
$myPOST = unserialize(urldecode($_GET["data"]));
Wobei ich mir nicht sicher bin ob die Weitergabe von parametern mit dem Location-Header erlaubt ist, daher würde ich eher die fsockopen-Variante in Betracht ziehen, und hier einen kompletten POST oder GET Header abschicken.
Unter http://php3.de/manual/de/function.fsockopen.php findest Du auch einige gute Beispiele(vor allem in den Kommentaren!)
Also POST-Daten könntest Du auch wie oben den serializierten Array schicken, oder besser die einzelnen Parameter wieder mit reinschreiben, so dass man am Ende nicht wirklich merkt(bzw. nicht beachten muß!) das die Daten schon durch ein weiteres Script gelaufen sind, das würde ich dann in etwa so anhgehen:
// den Post-Header wie in den Manuals erzeugen, und dann wie folgt den urspünglichen Dsaten-String erzeugen:
foreach($_POST as $key=>$value) {
$post_data .= urlencode($key)."=".urlencode($value)."&";
}
Und Suche mal im Archiv hier nach fsockopen und POST, da findest Du ne Menge zu dem Thema!
Grüße
Andreas