cURL在PHP中影响Cookie检索?

时间:2010-05-02 10:33:57

标签: php curl

我不确定我是否正确地问这个问题。

我有两个PHP页面位于同一台服务器上。第一个PHP页面设置一个带有过期的cookie,第二个PHP页面检查是否设置了该cookie。如果设置,则返回“on”。如果未设置,则返回“off”。

如果我只是运行这些页面                
“www.example.com/set_cookie.php”                
AND                
“www.example.com/is_cookie_set.php” 我从is_cookie_set.php获得了“开”。

继续问题,在set_cookie.php文件中我有一个名为is_set的函数。此函数执行以下cURL并返回内容(“on”或“off”)。不幸的是,内容总是以“关闭”的形式返回。但是,如果我手动检查文件(“www.example.com/is_cookie_set.php”),我可以看到cookie已设置。

继承人的职能:

<?php
function is_set()
{
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'http://example.com/is_cookie_set.php');

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$contents = curl_exec ($ch);

curl_close ($ch);

echo $contents;
}
?>

请注意,我没有使用cURL获取或设置cookie,只检查检查cookie是否已设置的页面。

我查看了CURLOPT_COOKIEJAR和CURLOPT_COOKIEFILE,但我相信这些是通过cURL设置cookie而我不想这样做。

3 个答案:

答案 0 :(得分:0)

我相信你是在混淆。当您使用curl时,PHP会遇到像客户端(可能像浏览器一样)的问题,并为您提出请求。也就是说,卷曲检查的cookie与当前浏览器中的cookie无关。我想。

答案 1 :(得分:0)

我不完全确定你在这里要做什么,但你知道,正如nc3b已经指出的那样,在你的is_set()函数中,它是PHP充当客户端而不是你的浏览器,对吧?这意味着您的cookie测试将始终失败(=没有cookie返回)。

Cookie由客户存储,并随每个请求一起发送到服务器。

如果你想在PHP中找出是否已经设置了cookie - 当然,你需要与cookie相同的域 - 你可以使用普通的if (isset($_COOKIE["cookiename"]))

也许您正在尝试构建一个解决方案来查询远程主机上的cookie。为此,请参阅此SO问题:

答案 2 :(得分:0)

Curl就像你的浏览器一样充当了http客户端。 如果配置它们,它们都会接收并存储cookie,但它们并不相关。

Curl不使用浏览器cookie。如果要使用浏览器cookie,则必须使用--cookie选项开关。有关详细信息,请参阅联机帮助页:http://curl.haxx.se/docs/manpage.html
例如,Firefox将它们存储在名为cookies.txt的文件中。 在linux下它位于〜/ .mozilla / firefox / $ profilefolder / cookies.txt

提示:如果您使用Firefox&gt; = 3.0,则cookie存储在sqlite数据库中。如果要将它们与curl一起使用,则必须自己提取cookies.txt文件。 以下是如何执行此操作的一些示例: