CodeIgniter 3 会话无法在 Safari 上运行

CodeIgniter 3 Session not working on Safari

当用户从 PC 或平板电脑使用 Safari 时,CodeIgniter 会话出现问题。在 Google Chrome 上,Firefox Dev Edition 运行良好,我认为问题与 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 为空文件 3,其中一个包含正确的会话数据信息。

有什么建议吗?

几件事,

CodeIgniter $this->session->userdata('user_id') returns Boolean 对于这个,所以你不能检查它是否 。你必须检查它是 true 还是 false.

改变这个:

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');
}