2013-01-17 70 views
2

我使用Codeigniter的會話類來創建Cookie並將會話信息存儲在我的數據庫中,但我遇到了跨瀏覽器的問題。
看來我已經得到了所有瀏覽器的所有功能,除了Firefox。該網站在用戶登錄後不斷踢出用戶。我懷疑是由於某種原因,會話永遠不會被設置。firefox中的Codeigniter會話將不會設置

有沒有建議嗎?
網站在這裏:http://www.nanp.org。下面
代碼:

public function post() { 
    $this->load->model('rbac/user'); 
    if($user = $this->user->user_by_column(array('email'=>$_POST['email'],'password'=>$_POST['password'],'verified'=>'true'))) { 
     $this->session->set_userdata(array('user_id'=>$user->user_id)); 
     if($_POST['redirect']!='') {header('Location:'.$_POST['redirect']);} 
     else {header('Location:members/dashboard');} 
    } 
    else { 
     $this->data['php_error'] = 'Incorrect email or password.'; 
    } 
} 

這是我的會話配置信息:

$config['sess_cookie_name']  = 'nanpsession'; 
$config['sess_expiration']  = 2628000; 
$config['sess_expire_on_close'] = FALSE; 
$config['sess_encrypt_cookie'] = TRUE; 
$config['sess_use_database'] = TRUE; 
$config['sess_table_name']  = 'ci_sessions'; 
$config['sess_match_ip']  = FALSE; 
$config['sess_match_useragent'] = TRUE; 
$config['sess_time_to_update'] = 300; 

$config['cookie_prefix'] = ""; 
$config['cookie_domain'] = ""; 
$config['cookie_path']  = "/"; 
$config['cookie_secure'] = FALSE; 

回答

1

嘗試2 equal signs的if語句:

public function post() { 
    $this->load->model('rbac/user'); 
    if($user == $this->user->user_by_column(array('email'=>$_POST['email'],'password'=>$_POST['password'],'verified'=>'true'))) { 
    $this->session->set_userdata(array('user_id'=>$user->user_id)); 
    if($_POST['redirect']!='') {header('Location:'.$_POST['redirect']);} 
    else {header('Location:members/dashboard');} 
    } 
    else { 
    $this->data['php_error'] = 'Incorrect email or password.'; 
    } 
} 

更多信息大約一的意思等於上PHP If If Statment here:A php if statement with one equal sign...? What does this mean?

+0

不要以爲這是我的問題。我沒有在那裏檢查平等,這不是一個瀏覽器問題,這是一個PHP問題,所以如果這是問題,它將顯示所有瀏覽器,而不僅僅是Firefox。 – bluemoonballoon

1

如何確認會話無法正常工作?嘗試打印任何會話變量或回顯這個,如果這返回空數組,那麼你的會話可能不工作。

echo print_r($this->session->set_userdata()); 

既然你說你的會話終止在火狐只,可能是你,因爲其中的復位會話變量配置在Firefox的東西。

+0

是的,我一直在「set_userdata」行之後打印會話數據。對於某些Firefox用戶,Codeigniter會話數組的「userdata」鍵是空的。有趣的是,使用Firefox的一切工作都正常 - 其他用戶遇到問題。 – bluemoonballoon