gpt4 book ai didi

php - 通过 curl 设置 cookie

转载 作者:行者123 更新时间:2023-12-04 06:26:19 27 4
gpt4 key购买 nike

我正在尝试通过 PHP 中的 cURL 设置 cookie,但它失败了。我的 php 代码看起来像这样

$ch=curl_init();
$url="http://localhost/javascript%20cookies/test_cookies.html";
curl_setopt($ch, CURLOPT_COOKIE, 'user=1');
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$contents = curl_exec($ch);
curl_close($ch);
echo $contents;
?>

文件 test_cookies.html 包含检查 cookie 的 javascript,如果它发现它显示带有附加用户内容的内容。
但是当我使用上面的脚本时,它会显示页面 test_cookies.html 的内容,但不显示其他用户内容,这意味着它没有设置 cookie。

我试着写另一个这样的脚本
<?php
header("Set-Cookie:user=1");
header("Location:test_cookies.html");
?>

这可以工作并设置cookie并显示额外的用户内容。
我也尝试使用
curl_setopt($ch,CURLOPT_COOKIEFILE,"cookie.txt");
curl_setopt($ch,CURLOPT_COOKIEJAR,"cookie.txt");

这是将 cookie 信息写入文件但在获取页面时不读取它。
有人可以帮忙吗?

最佳答案

由于 javascript 在浏览器中进行检查,因此您应该在将输出发送到浏览器之前设置 cookie。所以你需要结合两个脚本:

$ch=curl_init();
$url="http://localhost/javascript%20cookies/test_cookies.html";
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$contents = curl_exec($ch);
curl_close($ch);
header("Set-Cookie:user=1");
echo $contents;

解释:
请注意,我们在这里查看两个转移:
  • 数据由 curl 获取,然后
  • 它被发送到浏览器。

  • 这是一种特殊情况,您使用 curl 从 localhost 获取内容。 ,但在现实生活中,您会使用 curl 从第三台主机获取内容。

    如果您根据请求中是否发送 cookie 而收到不同的内容,那么您应该使用 curl 设置 cookie。在大多数情况下,您无需额外调整浏览器即可发送内容。但是在这里,您通过在浏览器中检查 cookie 来做出决定,因此您不需要第一个 cookie 设置,而确实需要第二个。

    关于php - 通过 curl 设置 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6007225/

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