POSTEN Sie Daten an eine URL in PHP


93

Wie kann ich POST-Daten an eine URL in PHP senden (ohne Formular)?

Ich werde es zum Senden einer Variablen verwenden, um ein Formular auszufüllen und zu senden.

Antworten:


192

Wenn Sie Daten aus dem PHP-Code selbst (ohne Verwendung eines HTML-Formulars) an eine URL senden möchten, können Sie dies mit curl tun. Es wird so aussehen:

$url = 'http://www.someurl.com';
$myvars = 'myvar1=' . $myvar1 . '&myvar2=' . $myvar2;

$ch = curl_init( $url );
curl_setopt( $ch, CURLOPT_POST, 1);
curl_setopt( $ch, CURLOPT_POSTFIELDS, $myvars);
curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt( $ch, CURLOPT_HEADER, 0);
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1);

$response = curl_exec( $ch );

Dadurch werden die Post-Variablen an die angegebene URL gesendet, und die Rückgabe der Seite erfolgt in $ response.


2
Soweit Ihre Lösung korrekt ist, wollte das OP wissen, wie es mit HTML-Formularen funktioniert. Obwohl die Frage nicht sehr klar war.
Helen Neely

Wir konnten das Problem nicht verstehen, aber es sperrt das Programm.
Albatros

2
egal , was zu erarbeiten CURLOPT_FOLLOWLOCATION, CURLOPT_HEADERund CURLOPT_RETURNTRANSFERzu tun? Ich ziehe es vor, keinen Code zu kopieren, den ich nicht vollständig verstehe.
Stefan Fabian

1
@Mike, obwohl das stimmt, würde ich es vorziehen, alles in einer Antwort zu haben, um entweder von Anfang an klar zu sein oder in der Antwort erklärt zu werden, da die Leute normalerweise zum Stapelüberlauf kommen, um eine Antwort zu erhalten, um keine weiteren Fragen zu erhalten.
Stefan Fabian

1
@Stefan Ich fand die Antwort vollkommen klar ... sie ging auf die Frage ein. Wenn Ihr Verständnis unter dem Niveau der Antwort liegt, machen Sie weitere Nachforschungen. Muss er auch erklären, dass das $urleine hat, $weil in PHP so eine Variable angegeben wird? Wo ziehst du die Grenze? "... nicht mehr Fragen zu bekommen" ist nicht die Einstellung von jemandem, der es schafft, sich selbst zu lernen, insbesondere zu programmieren.
Mike

75

cURL-less kannst du in php5 verwenden

$url = 'URL';
$data = array('field1' => 'value', 'field2' => 'value');
$options = array(
        'http' => array(
        'header'  => "Content-type: application/x-www-form-urlencoded\r\n",
        'method'  => 'POST',
        'content' => http_build_query($data),
    )
);

$context  = stream_context_create($options);
$result = file_get_contents($url, false, $context);
var_dump($result);

6
file_get_contents ist auf Hosts von Drittanbietern häufig deaktiviert und cURL ist die einzige Option
KryptoniteDove

3
@KryptoniteDove Ich weiß, dass es oft deaktiviert ist. Aufgrund habe ich eine Zeile oben auf meine Antwort "CURLESS" gesetzt
Burak Öztürk

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.