Mit curl senden/abrufen von Formularen Ergebnisse
Ich brauche Hilfe bei dem Versuch, sich zu kräuseln nutzen, um post-Daten zu einer Seite und das abrufen der Ergebnisse, nachdem das Formular abgesendet wurde.
Habe ich eine einfache form:
<form name="test" method="post" action="form.php">
<input type="text" name="name" size="40" />
<input type="text" name="comment" size="40" />
<input type="submit" value="submit" />
</form>
Darüber hinaus bin ich php-code zum verarbeiten dieser form in der gleichen Seite. Alle es tut, ist die echo-back-form-Werte.
Die LOCKE, die ich verwende ist dieses:
$h = curl_init();
curl_setopt($h, CURLOPT_URL, "path/to/form.php");
curl_setopt($h, CURLOPT_POST, true);
curl_setopt($h, CURLOPT_POSTFIELDS, array(
'name' => 'yes',
'comment' => 'no'
));
curl_setopt($h, CURLOPT_HEADER, false);
curl_setopt($h, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($h);
echo $result;
Wenn ich starten Sie die Seite mit curl-code, bekomme ich die form.php den Inhalt einer Seite, aber es nicht zeigen
die Variablen, die von PHP haben sollte, echo würde, wenn das Formular abgeschickt wird.
wäre dankbar jede Hilfe mit diesem.
Dank.
- können wir sehen, das PHP das handhabt form submition? das problem kann dabei sein.
- außerdem haben Sie überprüft, dass die Einreichung des Formulars manuell erzeugt die gewünschte Ausgabe?
- Absenden des Formulars manuell produziert den richtigen output. Die PHP, die Griffe die form ist: if(isset($_POST['submitted'])){echo $_POST[name] ..... etc. und das ist es
Du musst angemeldet sein, um einen Kommentar abzugeben.
AHHHH, nachdem Sie Ihren Kommentar, das problem ist klar.
müssen Sie eine weitere POST-Variablen im array.
den submit-button gibt auch ein post Wert, wenn darauf geklickt wird, prüfen Sie in Ihrem Formular-Verarbeitung mit PHP.
in Ihrem curl-code, jedoch müssen Sie Links aus der 'eingereicht' post-Variablen.
wenn dies ist, was Sie suchen, wählen Sie bitte das Häkchen bei " diese Antwort. danke!
Aus der Lektüre der anderen beiden Antworten, und der Kommentar von der OP, ich habe ein paar Ideen.
Insbesondere die OP Kommentar war:
Unter standard-Bedingungen, Ihre grundlegende form, wie bereits in der Ursprünglichen Frage, würde generieren $_POST-array wie das folgende:
Ihrem Kommentar darauf hin, dass einige Aspekte Ihres form-handler ist auf der Suche nach einem $_POST ein element namens "eingereicht".
1) Die Grundform, wie in der Frage, wird immer FALSE zurückgeben, für einen Scheck für $_POST['eingereicht'], und, als solche, löst die ELSE-Aktion (falls vorhanden) für diese bedingte.
2) Ihre CURL Aktion nicht entweder 'senden' oder 'eingereicht', und, wieder, wird immer FALSE zurückgeben, für die Sie bedingte.
So, ich würde vorschlagen, dass Sie:
1) Überprüfen Sie die Formular-Handler, und sehen, welche Felder sind wichtig, was Ihre Namen sind, und was deren Inhalt sein sollte.
2) Überprüfen Sie Ihre Basic-Form, und stellen Sie sicher, dass die entsprechenden Felder ein.
3) Überprüfen Sie Ihre CURL Maßnahmen, und sicherzustellen, dass es details jedes Feld, das erforderlich ist. (Leicht zu überprüfen wäre, legen
print_r( $_POST );die();
an der Spitze der Form-Handler und legt die grundlegende form. Dies wird Ihnen genau zeigen, was das Formular zu senden, so können Sie es neu erstellen in CURL.