POST des données vers une URL en PHP

95

Comment puis-je envoyer des données POST vers une URL en PHP (sans formulaire)?

Je vais l'utiliser pour envoyer une variable pour remplir et soumettre un formulaire.

Poisson Belgin
la source

Réponses:

195

Si vous cherchez à publier des données sur une URL à partir du code PHP lui-même (sans utiliser de formulaire html), cela peut être fait avec curl. Il ressemblera à ceci:

$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 );

Cela enverra les variables de publication à l'url spécifiée, et ce que la page retournera sera dans $ response.

Peter Anselmo
la source
2
Dans la mesure où votre solution est correcte, je pense que l'OP voulait savoir comment le faire avec un formulaire HTML. Bien que la question ne soit pas très claire.
Helen Neely
Nous n'avons pas pu comprendre le problème mais il verrouille le programme.
albatros
2
souci d'élaborer quoi CURLOPT_FOLLOWLOCATION, CURLOPT_HEADERet CURLOPT_RETURNTRANSFERfaire? Je préfère ne pas copier du code que je ne comprends pas parfaitement.
Stefan Fabian
1
@Mike bien que cela soit vrai, je préférerais que tout soit dans une réponse pour être clair dès le début ou expliqué dans la réponse parce que les gens viennent généralement à stackoverflow pour une réponse pour ne pas avoir plus de questions.
Stefan Fabian
1
@Stefan J'ai senti que la réponse était parfaitement claire ... elle répondait à la question. Si votre niveau de compréhension est inférieur au niveau de la réponse, faites des recherches supplémentaires. Doit-il également expliquer que le $urla un $parce qu'en php c'est comme ça que vous indiquez une variable? Où tracez-vous la ligne? "... ne pas avoir plus de questions" n'est pas l'attitude de quelqu'un qui réussira à s'auto-apprendre, en particulier la programmation.
Mike du
75

sans cURL que vous pouvez utiliser en php5

$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);
Burak Öztürk
la source
6
file_get_contents est souvent désactivé sur les hôtes tiers et cURL est la seule option
KryptoniteDove
3
@KryptoniteDove Je sais qu'il est souvent désactivé. En raison de j'ai mis une ligne en haut de ma réponse "CURLESS"
Burak Öztürk