Outils pour utilisateurs

Outils du site


langages:php:requete-http-post

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'),
);
langages/php/requete-http-post.txt · Dernière modification: 08/12/2014 16:28 (modification externe)