On admet les données à envoyer, par la méthode POST, regroupées en un tableau. Exemple :
$post = array( 'q' => 'fr', 'login' => 'foo', 'password' => 'bar', 'submit' => TRUE, ); var_dump( http_post('http://un-domaine.ext/chemin/vers/la/ressource.ext', $post) );
function http_post($url, Array $post) { $data = http_build_query($post); return file_get_contents( $url, FALSE, stream_context_create( array( 'http' => array( 'method' => 'POST', 'header' => "Content-type: application/x-www-form-urlencoded\r\nContent-Length: " . strlen($data) . "\r\n", 'content' => $data, ) ) ) ); }
function http_post($url, Array $post) { $ch = curl_init($url); curl_setopt($ch, CURLOPT_POST, TRUE); curl_setopt($ch, CURLOPT_POSTFIELDS, $post); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); $ret = curl_exec($ch); curl_close($ch); return $ret; }
cURL a pour avantage de permettre l'envoi de fichiers. À cette fin, il suffit simplement de préfixer la valeur du tableau d'un arobase (un chemin absolu - fonction realpath pour faire la conversion - est vivement recommandé). Exemple (clé avatar) :
$post = array( 'q' => 'fr', 'login' => 'foo', 'password' => 'bar', 'submit' => TRUE, 'avatar' => '@' . realpath('monNouvelAvatar.gif'), );