2011-10-10 50 views
0

我意识到这已经涵盖了一堆,但由于某种原因,它仍然不适合我。我试图通过cURL将cookie传递到页面,但目标页面仍然不会提取它。使用cURL传递cookie

下面的相关代码。

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

谢谢。这里

回答

0

尝试使用类似

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

是做样品方式,

<?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 */ 
?> 

编辑

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

得到它从here

+0

感谢您的答复 - 是CURLCOOKIE要去饼干或文件名拿着饼干吗? – user988129

+0

而且,用于cookie文件的语法是什么。它会只是“CookieName = CookieValue”吗? – user988129

+0

它会像curl_setopt($ ch,CURLOPT_COOKIEJAR,'cookie.txt'); curl_setopt($ ch,CURLOPT_COOKIEFILE,'cookie.txt');如果这是Cookie文件 – Astha

0

这是一个示例,如何通过curl工作,并注意它,你应该有写权限来做到这一点。 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. 

?>