【问题标题】:passing cookie info with curl in php在 php 中使用 curl 传递 cookie 信息
【发布时间】:2011-04-08 00:50:33
【问题描述】:

您好,感谢您帮助我完成我的项目。所以我已经成功创建了一个脚本来登录我的聊天,但是当我尝试执行 curl 的第二部分时,它说我需要登录才能发布消息。第一个 curl 自己工作并登录。那么我如何才能使用第一个 curl 保持登录状态,然后转到第二部分发布消息?

/* =================================================================== 
login set cookie
====================================================================== */
$clogin = curl_init();
curl_setopt ($clogin, CURLOPT_URL, $Login_URL);
curl_setopt ($clogin, CURLOPT_REFERER, $Referer);
curl_setopt ($clogin, CURLOPT_USERAGENT, $Agent);
curl_setopt ($clogin, CURLOPT_COOKIEJAR, $Cookie_Location);
curl_setopt ($clogin, CURLOPT_COOKIEFILE, $Cookie_File); 
curl_setopt ($clogin, CURLOPT_POST, 1);
curl_setopt ($clogin, CURLOPT_POSTFIELDS, $Login_Data);
curl_setopt ($clogin, CURLOPT_RETURNTRANSFER, 1);
curl_exec   ($clogin);

/* =================================================================== 
post message
====================================================================== */

$cpost = curl_init();
curl_setopt ($cpost, CURLOPT_URL, $Posting_URL);
curl_setopt ($cpost, CURLOPT_REFERER, $Login_URL);
curl_setopt ($cpost, CURLOPT_USERAGENT, $Agent);
curl_setopt ($cpost, CURLOPT_COOKIEJAR, $Cookie_Location);
curl_setopt ($cpost, CURLOPT_COOKIEFILE, $Cookie_File); 
curl_setopt ($cpost, CURLOPT_POST, 1);
curl_setopt ($cpost, CURLOPT_POSTFIELDS, $Posting_Data);
curl_setopt ($cpost, CURLOPT_RETURNTRANSFER, 1);
curl_exec   ($cpost);
curl_close($cpost);

【问题讨论】:

    标签: php cookies curl


    【解决方案1】:

    您似乎在第一个请求中设置了 CURLOPT_COOKIEJAR(写入),但在第二个请求中没有从同一文件读取 CURLOPT_COOKIEFILE(读取)

    【讨论】:

    • 不要忘记在临时文件夹中创建一个随机文件名,而不是在当前路径下使用通常命名的文件名,最好避开 cookiejar/cookiefile,而是读取从卷曲过程。然后,您可以使用 CURLOPT_COOKIE 将 cookie 信息传递回您的第二个请求,甚至可以使用返回的 sessionid 的数据数据。
    • 哇!哈哈,这听起来很复杂,我从今天开始只使用 curl。您可以通过什么方式向我展示您在说什么,或者在线提供指南或教程?
    • @FAFAFOHI 我们知道您正在使用 CURL。他(@Scuzzy)的建议是正确的。在同一个(第一个)请求中使用这两个函数(CURLOPT_COOKIEJAR、CURLOPT_COOKIEFILE)不是正确的方法。 - 继续...
    • 您只需像这样设置 $Cookie_Location,在第一部分之前 $Cookie_Location = tempnam ("/tmp", "COOKIEFILENAME"); "tempnam" - 这个函数创建一个唯一的文件名(更多:php.net/manual/en/function.tempnam.php)#1 第一部分:curl_setopt ($clogin, CURLOPT_COOKIEJAR, $Cookie_Location); #2 第二部分:curl_setopt ($cpost, CURLOPT_COOKIEFILE, $Cookie_Location);因此,您可以在登录后使用 COOKIE 文件访问任何页面。
    【解决方案2】:

    如果它是您自己的聊天应用程序,您就不能创建某种令牌并每次将其作为 get 参数传递并验证您自己,而不是通过 cookie 进行验证吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-31
      • 1970-01-01
      • 2014-02-25
      • 1970-01-01
      • 1970-01-01
      • 2011-04-20
      • 2013-11-06
      相关资源
      最近更新 更多