Lecture et création de cookies via CURL

Plusieurs utilisation des cookies avec CURL :

Définition manuelle des cookies dans le script

La définition de cookies se fait via l'option CURLOPT_COOKIE. Les cookies sont à passer sous forme de chaîne où chaque cookie est défini dans un format bien précis : nom_cookie=valeur_cookie;

<?php

// Définition manuelle de cookies
// Format d'un cookie : cookie_name=cookie_value;
curl_setopt($ch, CURLOPT_COOKIE, 'cookie1=val1; cookie2=val2; cookie3=val3; ');

?>

Voici une petite fonction pour faciliter l'ajout de multiples cookies à une requête CURL via un tableau PHP.

<?php

/*
$cookies_string = my_curl_set_cookies(array(
array('name' => 'cookie1', 'value' => 'val1'),
array('name' => 'cookie2', 'value' => 'val2'),
array('name' => 'cookie3', 'value' => 'val3')
));

curl_setopt($ch, CURLOPT_COOKIE, $cookies_string);
*/
function my_curl_set_cookies(Array $pCookies)
{
$r = '';
foreach ($pCookies as $cookie)
$r .= sprintf('%s:%s; ', $cookie['name'], $cookie['value'])
return $r;
}

?>

 

Enregistrement automatique des cookies retournés par la requête CURL

Il est possible de demander à CURL de stocker les cookies reçus dans un fichier afin de pouvoir les réutiliser ensuite (voir cours Authentification et sessions avec CURL). On indique le fichier à CURL via l'option CURLOPT_COOKIEJAR.

<?php

// Fichier dans lequel cURL va écrire les cookies
// (pour y stocker les cookies de session)
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookies_file);

?>

 

Utilisation d'un fichier de cookies

Il est aussi possible de demander à CURL de lire directement les cookies dans un fichier et de les envoyer de façon automatique dans la requête, via l'option CURLOPT_COOKIEFILE.

De cette façon, vous pouvez par exemple écrire vos cookies dans un fichier afin de les envoyer ensuite sans les écrire directement dans le script.

<?php

// Fichier dans lequel cURL va lire les cookies
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookies_file);

?>

 

A propos de l'auteur

Antoine Beaumont

Antoine Beaumont est Consultant Web et Développeur. Fort d'une expérience construite au sein de grandes agences Web-marketing, pour tous types de comptes, il accompagne désormais les professionnels dans leurs projets Web, de façon souple et objective.