2009-11-26 4 views
1
$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 redirige. Ce code suffirait-il? Parce qu'il semble ne pas obtenir le cookie correctement. Comment puis-je vérifier pour voir si c'est réglé? Mieux encore, si je sais quels cookies je veux, puis-je le faire ou quelque chose?cURL: Comment savoir si mes cookies sont correctement configurés?

Editer: Donc mon script CURL visite le site web non? Le site web définit les cookies pour la validation, et je veux voir si mon script cURL reçoit ces cookies correctement. Je veux savoir s'il y a un test pour cela, et/ou je veux savoir si je peux juste créer un cookie pour valider pour le site web.

+0

Je devrais vraiment relire mes messages avant de poster. – Strawberry

Répondre

1

J'ai eu récemment un projet où je devais passer les cookies entre les serveurs, et je trouve que la mise à la fois CURLOPT_COOKIEFILE et CURLOPT_COOKIEJAR dans le même fichier a fait l'affaire.

Si vous souhaitez simplement voir si les cookies du site distant sont configurés, vous devriez pouvoir consulter le fichier CURLOPT_COOKIEJAR dans un éditeur de texte.

1

Si c'était le curl de la ligne de commande, vous devez ajouter le paramètre -v. Faites attention aux lignes commençant par > Cookie:.

La version php de c'est:

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

Et si cela était un navigateur je déboguer avec un de ces: vous pouvez utiliser Fiddler sur IE, TamperData ou Firebug (net) sur Firefox, l'inspecteur on Chrome et on Safari , ou un proxy avec n'importe quel navigateur pour voir comment le formulaire est soumis par un navigateur "normal".

L'approche par proxy peut fonctionner si vous définissez la boucle de php pour l'utiliser.

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

Si vous voulez simplement ajouter des cookies à une demande, vous pouvez écrire une ligne comme:

$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à, ceux-ci pourraient être plus le long de 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.."); 
+0

Malheureusement je pense que je suis confus au sujet de ce qui ne fonctionne pas spécifiquement dans votre question? Est-ce que vous recevez un cookie dans le cookie et que vous voulez vérifier si vous utilisez ce cookie? Ensuite, j'utiliserais les méthodes verbose ou proxy. – dlamblin

Questions connexes