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)
);
====== Avec allow_url_fopen (PHP 5 uniquement) ======
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,
)
)
)
);
}
====== Avec cURL (PHP 4 comme 5) ======
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'),
);