2011-10-10 2 views
0

Je me rends compte que cela a été couvert de nombreuses fois, mais pour une raison quelconque, ça ne marche toujours pas pour moi. J'essaie de passer un cookie à une page via cURL mais la page de destination ne le récupèrera toujours pas.Passer le cookie en utilisant cURL

Code pertinent ci-dessous.

 $cookie = "did=1"; 
     $ch = curl_init(); 
    $cj=tempnam("/","cookiejar"); 
     curl_setopt($ch, CURLOPT_URL, $url); 
     curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
     curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1;  en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13')"); 
     curl_setopt($ch, CURLOPT_COOKIE, $cookie); 
     curl_setopt($ch, CURLOPT_ENCODING, ""); 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
     curl_setopt($ch, CURLOPT_AUTOREFERER, true); 

Merci.

Répondre

0

essayer d'utiliser quelque chose comme

$ckfile = tempnam ("/", "CURLCOOKIE"); 

chemin ici est l'échantillon pour le faire

<?php 
$ckfile = tempnam ("/", "CURLCOOKIE"); 

$ch = curl_init ("http://somedomain.com/"); 
curl_setopt ($ch, CURLOPT_COOKIEJAR, $ckfile); 
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true); 
$output = curl_exec ($ch); 

$ch = curl_init ("http://somedomain.com/cookiepage.php"); 
curl_setopt ($ch, CURLOPT_COOKIEFILE, $ckfile); 
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true); 
$output = curl_exec ($ch); 

/* here you can do whatever you want with $output */ 
?> 

EDIT

class CURL { 
var $callback = false; 

function setCallback($func_name) { 
$this->callback = $func_name; 
} 

function doRequest($method, $url, $vars) { 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_HEADER, 1); 
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt'); 
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt'); 
if ($method == 'POST') { 
    curl_setopt($ch, CURLOPT_POST, 1); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $vars); 
} 
$data = curl_exec($ch); 
curl_close($ch); 
if ($data) { 
    if ($this->callback) 
    { 
     $callback = $this->callback; 
     $this->callback = false; 
     return call_user_func($callback, $data); 
    } else { 
     return $data; 
    } 
} else { 
    return curl_error($ch); 
} 
} 

function get($url) { 
return $this->doRequest('GET', $url, 'NULL'); 
} 

function post($url, $vars) { 
return $this->doRequest('POST', $url, $vars); 
} 
} 
?> 

obtenu à partir here

+0

merci pour la réponse - est le CURLCOOKIE va le cookie ou le nom du fichier en maintenant le cookie? – user988129

+0

Et aussi, quelle est la syntaxe à utiliser pour un fichier cookie. Serait-ce juste "CookieName = CookieValue"? – user988129

+0

ce serait comme curl_setopt ($ ch, CURLOPT_COOKIEJAR, 'cookie.txt'); curl_setopt ($ ch, CURLOPT_COOKIEFILE, 'cookie.txt'); où c'est le fichier cookie – Astha

0

Ceci est un exemple de la façon de travailler par les cookies par curl, et prenez soin de cela, que vous devriez avoir la permission en écriture pour le faire. http://curl.phptrack.com

$url = "http://curl.phptrack.com/login.php"; // URL 
$POSTFIELDS = 'name=admin&password=guest&submit=save'; 
$reffer = "http://curl.phptrack.com/index.php"; 
$agent = "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.4) Gecko/20030624 Netscape/7.1 (ax)"; 
$cookie_file_path = "C:/Inetpub/wwwroot/spiders/cookie/cook"; // Please set your Cookie File path. This file must have CHMOD 777 (Full Read/Write Option). 

$ch = curl_init(); // Initialize a CURL session.  
curl_setopt($ch, CURLOPT_URL, $url); // The URL to fetch. You can also set this when initializing a session with curl_init(). 
curl_setopt($ch, CURLOPT_USERAGENT, $agent); // The contents of the "User-Agent: " header to be used in a HTTP request. 
curl_setopt($ch, CURLOPT_POST, 1); //TRUE to do a regular HTTP POST. This POST is the normal application/x-www-form-urlencoded kind, most commonly used by HTML forms. 
curl_setopt($ch, CURLOPT_POSTFIELDS,$POSTFIELDS); //The full data to post in a HTTP "POST" operation. 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // TRUE to return the transfer as a string of the return value of curl_exec() instead of outputting it out directly. 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // TRUE to follow any "Location: " header that the server sends as part of the HTTP header (note this is recursive, PHP will follow as many "Location: " headers that it is sent, unless CURLOPT_MAXREDIRS is set). 
curl_setopt($ch, CURLOPT_REFERER, $reffer); //The contents of the "Referer: " header to be used in a HTTP request. 

curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file_path); // The name of the file containing the cookie data. The cookie file can be in Netscape format, or just plain HTTP-style headers dumped into a file. 
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file_path); // The name of a file to save all internal cookies to when the connection closes. 

$result = curl_exec($ch); // grab URL and pass it to the variable. 
curl_close($ch); // close curl resource, and free up system resources. 

echo $result; // Print page contents. 

?>