firefox中的Codeigniter会话不会设置

时间:2013-01-17 20:43:34

标签: codeigniter session firefox

我正在使用Codeigniter的会话类在我的数据库中创建cookie并存储会话信息,但我遇到了跨浏览器的问题。
看来除了 Firefox 之外,我现在所有浏览器都能正常运行。该网站在用户登录后立即将用户踢出去。我怀疑是由于某种原因,会话永远不会被设置。

有任何建议吗?
网站: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;

3 个答案:

答案 0 :(得分: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语句的相同含义的更多信息,请访问A php if statement with one equal sign...? What does this mean?

答案 1 :(得分:1)

如何确认会话无效。尝试打印任何会话变量或回显它,如果这返回空数组,那么您的会话可能无法正常工作。

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

由于您说您的会话仅在 Firefox 上终止,因此您可能在Firefox上配置了一些内容,因为它会重置会话变量。

答案 2 :(得分:0)

你安装了Firebug吗?它可能会导致问题。请参阅Firebug destroying session variables in Codeigniter application