我正在使用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;
答案 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。