以下是我使用curl的代码:
class cURL {
var $headers;
var $user_agent;
var $compression;
var $cookie_file;
var $proxy;
var $process;
function cURL($cookies = TRUE, $cookie = 'cookies.txt', $compression = 'gzip', $proxy = '') {
$this->headers [] = 'Connection: Keep-Alive';
$this->headers [] = 'Content-type: application/x-www-form-urlencoded;charset=UTF-8';
$this->user_agent = 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0)';
$this->compression = $compression;
$this->proxy = $proxy;
$this->cookies = $cookies;
if ($this->cookies == TRUE)
$this->cookie ( "c:/wamp/www/googlegroups/cookies/".$cookie );
$this->process = curl_init ();
curl_setopt ( $this->process, CURLOPT_HTTPHEADER, $this->headers );
curl_setopt ( $this->process, CURLOPT_USERAGENT, $this->user_agent );
if ($this->cookies == TRUE)
curl_setopt ( $this->process, CURLOPT_COOKIEFILE, $this->cookie_file );
if ($this->cookies == TRUE)
curl_setopt ( $this->process, CURLOPT_COOKIEJAR, $this->cookie_file );
curl_setopt ( $this->process, CURLOPT_ENCODING, $this->compression );
curl_setopt ( $this->process, CURLOPT_TIMEOUT, 30 );
if ($this->proxy)
curl_setopt ( $this->process, CURLOPT_PROXY, $this->proxy );
curl_setopt ( $this->process, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt ( $this->process, CURLOPT_FOLLOWLOCATION, 1 );
curl_setopt ( $this->process, CURLOPT_SSL_VERIFYHOST, 0 );
curl_setopt ( $this->process, CURLOPT_SSL_VERIFYPEER, 0 );
}
function __destruct(){
curl_close ( $this->process );
unlink($this->cookie_file);
}
function cookie($cookie_file) {
if (file_exists ( $cookie_file )) {
$this->cookie_file = $cookie_file;
} else {
if($fp = fopen ( $cookie_file, 'w' ))
{
fclose($fp);
}
else $this->error ( 'The cookie file could not be opened. Make sure this directory has the correct permissions' );
$this->cookie_file = $cookie_file;
}
}
function get($url) {
curl_setopt ( $this->process, CURLOPT_POST, 0);
curl_setopt ( $this->process, CURLOPT_URL, $url);
$return = curl_exec ( $this->process );
return $return;
}
}
$cc = new cURL();
echo $cc->get("http://127.0.0.1/googlegroups/testcookie.php");
这是一种非常奇怪的卷曲故障,我以前从未体验过。 这是testcookie.php的输出:
您的Cookie未启用 浏览器
如果你删除unlink($ this-> cookie_file),这是有趣的事情;从破坏功能中,cookie文件不会被删除,下次你运行这个脚本时你会得到
您的浏览器已启用Cookie
testcookie.php源代码:
setcookie("test","test");
if (isset ($_COOKIE['test']))
{
echo "Cookies are enabled on your browser";
}
else
{
echo "Cookies are <b>NOT</b> enabled on your browser";
}
答案 0 :(得分:5)
我看不出问题出在哪里。 CURL正在做它想要做的事情。
setcookie()将响应头中的cookie设置为客户端。 _COOKIE包含请求标头中的值。如果删除cookie文件,CURL无法保留您设置的cookie值。