gpt4 book ai didi

php - 无法在 php curl 中启用 cookie

转载 作者:可可西里 更新时间:2023-11-01 00:53:37 27 4
gpt4 key购买 nike

这是我使用 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 的输出:

Cookies are NOT enabled on your browser

如果你删除 unlink($this->cookie_file); 有趣的是从销毁函数中,cookie 文件不会被删除,下次运行此脚本时,您将得到

Cookies are enabled on your browser

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";
}

最佳答案

我看不出问题出在哪里。 CURL 正在做它应该做的事情。

setcookie() 在响应头中设置 cookie 给客户端。 _COOKIE 包含请求 header 中的值。如果您删除 cookie 文件,CURL 将无法保留您设置的 cookie 值。

关于php - 无法在 php curl 中启用 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1813639/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com