首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP Curl中的cookiejar

PHP Curl中的cookiejar
EN

Stack Overflow用户
提问于 2014-01-03 05:03:58
回答 2查看 12.8K关注 0票数 10

在PHP Curl的情况下,当我们需要根据web抓取来存储/读取cookie时,它感觉到有很多资源鼓励使用文件来处理这些选项。

代码语言:javascript
复制
curl_setopt($ch, CURLOPT_COOKIEJAR, $CookieJarFilename);

curl_setopt($ch, CURLOPT_COOKIEFILE, $CookieJarFilename);

这里的底线是,它们使用单个文件作为cookiejar (通常是.txt文件)。

但在真实的情况下,我们的网站不仅被一台计算机访问,很可能有很多计算机同时访问它,还有一些机器人,如Googlebots、Yahoo Slurp等等。

那么,对于单.txt文件,cookie jar显然会覆盖相同的文本文件,这对cookie来说真是一团糟吗?

还是我搞错了?

处理饼干的“正确”方法是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-03 08:46:36

如果有多个人访问您的页面,并且您需要为每个人使用唯一的cookies来执行curl,那么您可以做几件事情来处理这个场景。

1)如果您的用户经过身份验证,并且在您的端启动了一个$_SESSION,那么您可以使用session_id()作为cookie的文件名。

2)如果您的用户不需要任何会话(例如Google ),您可以使用时间戳+一个额外的随机数来创建cookie文件名。例如:

代码语言:javascript
复制
$cookieName = time()."_".substr(md5(microtime()),0,5).".txt"; 
// Would output something like:
// `1388788940_91ab4.txt`

但是在这种情况下,如果用户在5分钟后返回给您(除非您用cookie文件名设置用户的cookie ),就不能重用cookie。

无论是哪种情况,都要确保定期清理这些文件。否则,您将在目录中创建大量cookie文件。

票数 9
EN

Stack Overflow用户

发布于 2017-03-03 10:24:03

如果你想让PHP帮你做清理。

像bagz_man说的那样使用tempnam,但是在使用之后,读取文件内容并将其存储在您的会话中。然后可以删除临时文件。下次需要时创建一个新文件。

唯一留下的是会话,php负责这个会话。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20896893

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档