Frage

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

Die Website setzt ein Cookie und leitet dann. Wäre dieser Code genügen? Da scheint es, wird das Cookie nicht richtig bekommen. Wie kann ich überprüfen, um zu sehen, ob es gesetzt ist? Noch besser wäre es, wenn ich weiß, was ich will Cookies kann ich es nur, oder was?

Edit: Also mein CURL Script besucht die Website richtig? Die Website setzt Cookies für die Validierung, und ich möchte sehen, ob mein cURL Skript richtig diese Cookies zu empfangen. Ich will wissen, ob es einen Test für das, und / oder ich möchte wissen, ob ich kann einfach ein Cookie erstellen, um die Website zu überprüfen.

War es hilfreich?

Lösung

Vor kurzem hatte ich ein Projekt, wo ich brauchte Cookies zwischen Servern zu übergeben, und ich fand, dass beide CURLOPT_COOKIEFILE und CURLOPT_COOKIEJAR auf die gleiche Datei Einstellung den Trick.

Wenn Sie wollen einfach nur, um zu sehen, ob die Cookies von dem Remote-Standort festgelegt werden, sollten Sie in der Lage sein, an der CURLOPT_COOKIEJAR Datei in einem Texteditor zu suchen.

Andere Tipps

Wenn dies der Befehl waren Linie curl Sie im -v Parameter werfen würde. Achten Sie auf die Linien mit > Cookie: beginnen.

Die PHP-Version davon ist:

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

Und wenn dies ein Browser wäre, würde ich mit einem dieser debuggen: Sie verwenden können Fiddler auf IE, TamperData oder Firebug (netto) auf Firefox, der Inspektor auf Chrome und auf Safari oder ein Proxy mit jedem Browser zu beobachten, wie die Form von einem „normalen“ Browser übermittelt wird.

Der Proxy-Ansatz könnte funktionieren, wenn Sie PHP curl gesetzt, es zu benutzen.

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

Wenn Sie wollen einfach nur Cookies in den eine Anfrage Sie eine Zeile wie schreiben konnte:

$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';

, aber ich bin nicht sicher, dass man, diese könnten mehr entlang der gleichen Linie sein:

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..");
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top