【发布时间】:2009-11-28 20:09:18
【问题描述】:
这是我使用 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");
这是我以前从未经历过的一种非常奇怪的 curl 故障类型。 这是 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";
}
【问题讨论】: