我有2个相同但数据库和数据不同的站点。一个网站是www.somesite.com,另一个是sub.somesite.com。我所做的是,如果有人登录到www.somesite.com并且登录详细信息与www.somesite.com不匹配,但他们确实匹配sub.somesite.com,然后使用cURL提交信息并将其登录。我有卷曲伟大工作:cURL登录在重定向时丢失会话变量
foreach($_POST as $key=>$p) {
if ($post != "") {
$post .= "&";
}
$post .= $key."=".$p;
}
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://sub.somesite.com");
curl_setopt($ch, CURLOPT_POST, count($_POST));
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
curl_setopt($ch, CURLOPT_COOKIEJAR, "cookies.txt");
curl_setopt($ch, CURLOPT_COOKIEFILE, "cookies.txt");
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
$cArray = curl_getinfo($ch);
$newURL = $cArray[url];
echo str_replace('</head>','<base href="'.$newURL.'" /></head>',$result);
curl_close($ch);
这样做是收集后的变量,并提交给其他网站,并增加了一个基本的URL,这样的路径是正确的。
我遇到的问题是之后的任何其他页面。所以说我在somesite.com上提交数据。即使它是去sub.somesite.com/welcome.php,它会显示在地址栏somesite.com,并且信息存储在cookies.txt中。现在,当我点击sub.somesite.com/page.php上的链接(sub.somesite.com/page2.php)时,它会重定向到登录页面,因为会话位于cookies.txt中,现在无法访问。
如何让会话继续在所有页面上工作?
在此先感谢。
有道理,但它们使用$ _SESSION而不是$ _COOKIE。我想我将不得不改变这两个网址?第一个设置cookie,第二个查找cookie并转换为会话? – fanfavorite 2012-04-02 01:37:37
好吧,也许将会话cookie(通常名为PHPSESSID)传递给客户端,然后重定向,将使其工作。 – Janhouse 2012-04-02 01:45:22
但忘了卷曲。您可以使用session_set_cookie_params来设置该域的会话cookie - http://php.net/manual/en/function.session-set-cookie-params.php – Janhouse 2012-04-02 01:45:56