2015-10-04 113 views
2

當用戶在PC或Tablet上使用Safari時,CodeIgniter會話出現問題。在谷歌瀏覽器和Firefox開發版正在工作完美,我認爲這個問題與Safari有關。CodeIgniter 3會話在Safari上不工作

這是我的會話代碼成功登錄後:

$logged_in = array(
    'username' => $out[0]['username'], 
    'user_id' => $out[0]['id'], 
    'logged_in' => TRUE 
); 
$this->session->set_userdata($logged_in); 
$this->session->set_flashdata('user_data', $logged_in); 
redirect('social/userprofile/' . $out[0]['username']); 

問題是,當用戶嘗試使用Safari的網站,他再次被重定向到的登錄頁面上登錄。

這是因爲:

public function check_logged($user2=""){ 
    $check_session = $this->session->userdata('user_id'); 
    if(!$check_session) { 
     redirect('social/index'); 
    } 
} 

嘗試一個登錄會話與保存會話的文件,我看到會話創建4個文件3個空,一個與會話數據的正確的信息。

什麼建議嗎?

+0

什麼是你得到的錯誤? – jlocker

+0

用戶被重定向到登錄頁面,因爲在重定向到用戶配置文件期間沒有會話數據。 – mds

+0

請使用登錄功能更新您的代碼。也請檢查會話cookie的用戶配置文件。 – jlocker

回答

1

幾樣東西,

$this->session->userdata('user_id')回報布爾這一點,所以你不能檢查其是否。您必須檢查其是否爲爲假

更改此:

public function check_logged($user2=""){ 
    $check_session = $this->session->userdata('user_id'); 
    if(empty($check_session)) { 
     redirect('social/index'); 
} 

public function check_logged($user2=""){ 
    $check_session = $this->session->userdata('user_id'); 
    if(!$check_session) { 
     redirect('social/index'); 
} 
+0

是的,這是真的我已經更新了這部分代碼,但問題仍然存在於Safari – mds

+0

我也將會話保存爲文件。使用Chrome和Firefox時,會話被保存,但使用Safari會話爲空 – mds

+1

@mds會話閃存數據是否工作? – jlocker