这是我的困境... 我基本上有一个脚本,它通过 CURL 发布到第 3 方网站以执行登录,然后发布另一个帖子以根据该登录 session 更新用户详细信息。现在,随着我的网站越来越忙,我有多个用户在做同样的事情,似乎 curl 有时会变得困惑,并用不同的用户信息更新一个用户的详细信息。这导致了真正的问题。 似乎是用户在一次登录后使用的 cookie 被其他用户共享,他们最终使用相同的 cookie 登录 - 混淆了第 3 方系统。我的代码发布在下面,我需要使用 cookiefile 和 cookiejar 来维护 php session 以允许我做我需要做的事情。但似乎所有用户都在重复使用同一个 cookie…… 那有意义吗?有什么我可以做的来改变这个吗?请指教.... 非常感谢!
下面是我用来登录和发布用户更新的代码
function hitForm($postURL, $postFields, $referer="", $showerr = FALSE, $ispost = TRUE) {
global $islocal, $path_escape;
$ch = curl_init();
curl_setopt($ch, CURLOPT_COOKIEJAR, "cookies.txt");
curl_setopt($ch, CURLOPT_COOKIEFILE, "cookies.txt");
curl_setopt($ch, CURLOPT_URL, $postURL);
if ($ispost)
curl_setopt($ch, CURLOPT_POST, 1);
else
curl_setopt($ch, CURLOPT_HTTPGET, 1);
curl_setopt($ch, CURLOPT_REFERER, $referer);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
$ret = curl_exec($ch);
if ($error = curl_error($ch)) {
if ($showerr)
echo 'ERROR: ' . $error;
return -1;
exit;
}
$CU_header = curl_getinfo($ch);
$CU_header["err"] = curl_errno($ch);
$CU_header["errmsg"] = curl_error($ch);
curl_close($ch);
$returnout = $ret;
//for debugging purposes for now we are logging all form posts
SaveLog("hitform", "F[".$this->curruserid." - ".$this->currfunc." - ".date("d-m-y h:i:s")."]".$postFields);
return $ret;
}
最佳答案
您为每个 session 使用相同的 cookies.txt 文件,因此这就是共享 cookie 问题的来源。您需要为要运行的每个并行 session 指定一个单独的文件。
关于php CURL - 多个独立 session - 需要帮助!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4547776/