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