Question

$ckfile = tempnam ("/tmp", "CURLCOOKIE");
$useragent="Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_0 like Mac OS X; en-us) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7A341 Safari/528.16";

$ch = curl_init ("website.com");
curl_setopt($ch, CURLOPT_USERAGENT, $useragent); 
curl_setopt ($ch, CURLOPT_COOKIEJAR, $ckfile);
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);

$output = curl_exec ($ch);

Le site Web définit un cookie, puis des redirections. Ce code suffirait-il? Parce qu'il semble ne pas bien recevoir le cookie. Comment puis-je vérifier si c'est réglé? Mieux encore, si je sais quels sont les cookies que je veux, puis-je le créer ou quelque chose d’autre?

Edit: Mon script CURL visite donc le site Web, n'est-ce pas? Le site Web configure les cookies pour la validation et je veux voir si mon script cURL les reçoit correctement. Je veux savoir s’il existe un test pour cela et / ou si je peux simplement créer un cookie à valider pour le site Web.

Était-ce utile?

La solution

J'ai récemment eu un projet dans lequel je devais transmettre des cookies entre serveurs. J'ai constaté que définir le code CURLOPT_COOKIEFILE et CURLOPT_COOKIEJAR sur le même fichier était efficace.

Si vous souhaitez simplement savoir si les cookies du site distant sont en cours d'installation, vous devriez pouvoir consulter le fichier CURLOPT_COOKIEJAR dans un éditeur de texte.

Autres conseils

S'il s'agissait de la ligne de commande curl, vous ajouteriez le paramètre -v . Faites attention aux lignes commençant par > Cookie: .

La version php de ceci est:

curl_setopt($ch,CURLOPT_VERBOSE,TRUE);//and set CURLOPT_STDERR to STDOUT

Et s’il s’agissait d’un navigateur, je déboguerais avec l’un de ceux-ci: vous pouvez utiliser Fiddler . sur IE, TamperData ou Firebug (net) sur Firefox, l'inspecteur sur Chrome et sur Safari , ou un proxy avec n'importe quel navigateur pour voir comment le formulaire est soumis par un message "normal". navigateur.

L'approche proxy pourrait fonctionner si vous définissez php's curl pour l'utiliser.

curl_setopt($ch,CURLOPT_HTTPPROXYTUNNEL,TRUE);//& CURLOPT_PROXYPORT CURLOPT_PROXY

Si vous souhaitez simplement ajouter des cookies à une demande, vous pouvez écrire une ligne du type:

$ch->headers[] = 'Cookie: recent=543..; _session_id=6185..; __utma=572.1.1.1.1; __utmc=572..; __utmz=572.1.1.1.1.utmccn=(referral)|utmcsr=domain.com|utmcct=/request/path|utmcmd=referral';

mais je ne suis pas sûr de celui-là, ils pourraient être plus dans la même ligne:

curl_setopt($ch,CURLOPT_COOKIE,"recent=543..; _session_id=618..");
// Possibly, but I think this might overwrite other headers.
curl_setopt($ch,CURLOPT_HTTPHEADER, "Cookie: recent=543..; _session_id=6185..");
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top