第二次调用 cookie 时,PHP CURL Cookie 未保留

发布于 2024-11-25 12:30:32 字数 346 浏览 1 评论 0原文

我有一个 php 页面,它使用 CURL 登录另一个页面,获取 cookie,然后使用它来调用另一个页面。在新页面上,可以再次调用 php 来调用相同的页面,但使用不同的参数。该代码可以在我的免费网络托管网站上运行。但是,当我将其移动到我的客户网页时,第一次调用可以工作(即 cookie 已创建并使用良好),但当我使用新参数再次调用该页面时则不起作用(即 cookie 未重用)。代码位于 WordPress 中,所有细节几乎相同(就像我将主题、插件和数据库从一个站点复制到另一个站点的方式一样)。造成这种差异的原因是什么?我该如何改变这种差异? 目前我能看到的唯一区别是查看网页的响应,无法正常工作的网站将缓存控制设置为无缓存且年龄=0。这是原因吗?如果是,我该如何改变?

I have a php page that uses CURL to log in to another page, get the cookies and then use that to call another page. On the new page the php can be called again to call the same page but with different parameters. This code all works on my free web hosting site. However when I moved it to my clients webpage works for the first call (i.e. cookie was created and used fine) but does not when I call the page again with a new parameter (i.e. the cookies is not reused). The code is in wordpress and all details are near identical (in the way that I have copied the themes, plugins and DB from one site to another). What would be the reasons for the difference and how would I go about changing this difference?
The only difference I can see at the moment is looking at the response from the web pages, the site that is not working has the cache-control set to no caching and age=0. Would this be the reason and if so how can I change this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

枯叶蝶 2024-12-02 12:30:32

尝试手动为您的curl操作分配cookiejar/文件:

$cookie_file = "/tmp/cookie/cookie1.txt";
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);

curl将在启动请求之前从cookiejar中读取cookie,并将收到的cookie写入从响应中获取的cookie文件中。

该路径必须可由执行 PHP 的用户访问和读/写。您应该使用完整路径,而不是相对路径。

编辑: Marc B 写道PHP、Curl、curl_exec()、curl_close() 和 cookies cookie 绑定到卷曲句柄。因此,只要不关闭手柄,curl 就应该注意饼干。

因此,如果两个请求共享相同的 curl 句柄,您可能不需要 cookiejar/文件。

Try to manually assign a cookiejar / file to your curl operations:

$cookie_file = "/tmp/cookie/cookie1.txt";
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);

curl will then read cookies from the cookiejar before starting the request and will write recieved cookies into the cookiefile it gets from the response.

The path must be accessible and read/write-able by the user that PHP gets executed as. You should use a full path, not a relative one.

Edit: Marc B writes in PHP, Curl, curl_exec(), curl_close() and cookies that cookies are bound to the curl handle. So as long as you don't close the handle curl should take care about cookies.

So you might not need the cookiejar/file if both requests share the same curl handle.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文