2011-07-05 118 views
3

如何为每个客户端/ PC运行脚本有多个Cookie?卷曲:多个饼干

如果ComputerA运行脚本,则会创建cookies.txt,并且ComputerB运行相同的脚本,然后cookie.txt将被覆盖,这是不好的。

例子:

curl_setopt($ch,CURLOPT_COOKIEFILE,"cookie.txt"); 
curl_setopt($ch,CURLOPT_COOKIEJAR,"cookie.txt"); 

回答

2

如果他们是独立的电脑,那么它是单独的文件系统,而且每次都会有自己的cookie文件。

但是,如果你在共享存储上,然后使用动态文件名,也许

'cookie-' . $_SERVER['SERVER_NAME'] . '.txt' 

代替,which'd给你

cookie-ComputerA.txt cookie-ComputerB.txt etc... 
+0

我不认为这会工作?脚本将在同一台服务器上,但请求来自多台计算机。 –

+0

啊。你说“computerA运行脚本,而computerB运行脚本”。两台独立的电脑。无论如何,这仍然不是问题。 cookie.txt文件将采用Netscape Cookie文件格式,该文件可以跟踪哪个主机来自Cookie。除非您并行运行脚本多次,否则一个cookie不会覆盖另一个脚本。 –

+0

Marc,好点,但我喜欢在MS-DOS而不是浏览器上运行脚本。我如何在MS-DOS上运行脚本(连接到外部网络)?在本地机器(开发),我通常这样做:'C:\ wamp \ bin \ php \ php5.3.0 \ php.exe index.php'这将执行代码..现在我怎么能在多台计算机上运行此LAMP安装)? –

0

你可以散列IP的请求到来从并将其添加到文件名。这将工作,除非两台计算机具有相同的公共IP。

0

您可以使用唯一标识符来唯一标识用户。用户ID,会话ID或IP地址可能是一个不错的选择:

$user_id = get_user_id_from_somewhere(); 
curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie-".$user_id.".txt"); 
curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie-".$user_id.".txt"); 
+0

好主意,也许兰特(12345,23423422324)? –

+0

@ user791022由于PHP的随机生成器不保证冲突,因此不能使用随机数作为唯一标识符。如果您在应用程序上使用用户身份验证,那么您几乎肯定会使用用户标识来达到此目的。否则,我建议使用IP地址或IP地址散列(例如'md5($ _ SERVER ['REMOTE_ADDR']')。 –