我有两个相同但不同的数据库和数据的网站。一个站点是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/welcome.php上的链接(sub.somesite.com/page2.php)时,它会重定向到登录页面,因为会话位于cookies.txt中,现在无法访问。
如何让会话继续在所有页面上运行?
提前致谢。
答案 0 :(得分:0)
这是因为CURL在不在客户端(浏览器)上的服务器上执行它。您的服务器可能有用户cookie,但用户没有。
您想使用setcookie为浏览器设置Cookie,而忘记Curl。