2012-10-15 67 views
1

我有一個擁有自己的登錄系統的CakePHP網站。在同一臺服務器(但不同的文件夾)中,我有一個WordPress的博客。一個已經登錄到CakePHP網站的用戶可以點擊一個鏈接,將他帶到WP博客並同時登錄到博客。所有這些都很完美。當離開網站並回到它時,會話被破壞

返回原始CakePHP網站時出現問題。如果我在博客中插入一個鏈接到該網站並且用戶點擊它,他將被帶到網站,但是他的會話丟失了,這意味着他必須重新登錄。

有什麼辦法可以防止這種情況發生?即使用戶離開網站,該會話是否仍然有效?這並不是它到期,我已經設置爲30分鐘。

即使用戶沒有通過網站中的鏈接訪問博客,也會發生這種情況。如果我登錄到網站,然後打開一個新標籤並進入博客(甚至沒有登錄),然後單擊鏈接到網站,網站中的會話就會丟失。那麼,實際上有一個新的會話(我一直在打印會話ID,它會改變)。

關於如何保持會話打開的任何想法都是有用的。

此外,爲了以防萬一,這裏是我用來登錄用戶從網站到博客腳本:

$sid = $_GET['sid']; 
session_id($sid); 
session_start(); 

if (isset($_SESSION['Auth']['User']['username'])) { 

    require('../blog/wp-blog-header.php'); //includes wordpress functions 

    $username = $_SESSION['Auth']['User']['username']; 

    $user = get_userdatabylogin($username); 
    wp_set_current_user($user->ID); 
    wp_set_auth_cookie($user->ID); 
} 

header("Location: http://myblog.com/"); //Redirect user to the blog 

回答

1

檢查你的安全級別。在某些情況下,它會在'referer'網站上進行檢查。如果您是來自WP博客,那麼可能適合您。這是我正在假設正在發生,因爲它正在生成一個新的會話ID。

+0

安全級別設置在您的config/core.php文件中'Security.level' –

+0

確保會話在您的博客中全局啓用 –

+0

感謝您的回覆。我在'medium'有'Security.level'。如何避免「referer」檢查?另外,如何在博客中啓用全球會話? – Albert