我有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