Safari浏览器中的codeigniter会话问题

时间:2019-09-19 07:36:57

标签: php codeigniter session mobile-safari

我们正在使用以下方法检查所有控制器功能的会话。

$ this-> session-> userdata('Admin_logged_in')

https://www.codeigniter.com/user_guide/libraries/sessions.html

但是在使用Safari浏览器的iPhone X上,它返回一个空值。没有为每个功能设置会话数组,因此用户无法登录界面。

如果从功能中删除了会话,则用户可以登录并且功能正常运行。对于我们开发的所有Codeigniter项目,都会出现此问题。

以下是我们尝试过的不同解决方案:

CodeIgniter 3会话无法在Safari上运行

http://mydons.com/fixed-mac-os-safari-codeigniter-sessionloginauthentication-issue/

https://forum.codeigniter.com/thread-63184.html

https://github.com/bcit-ci/CodeIgniter/issues/2880

检查会话:

public function index()
{
    if ($this->session->userdata('Admin_logged_in')) {
        $session_data = $this->session->userdata('Admin_logged_in');
        $id = $session_data['userId'];
        $data['Headding']="Dashboard";
        $this->template->load('admin_layout', 'contents', 'admin/Admin_Dashboard', $data);
    } else {
        redirect('Admin', 'refresh');
    }
}

设置会话的位置:

$sess_array = array();
foreach ($result as $result) {
    $sess_array = array( 
        'userId' => $result->userId, 
        'mobile' => $result->mobile, 
        'email'  => $result->email, 
        'status' => $result->status, 
        'RoleID' => $ans['roleId'], 
    );
}
$this->session->set_userdata('Admin_logged_in', $sess_array);

codeigniter Session in Safari browser

没有人给出正确的答案。给出的解决方案类似于Issue with Codeigniter sessions on Iphone

但是我需要在其中添加var timestamp = new Date()。getTime();的地方?

1 个答案:

答案 0 :(得分:0)

花花公子...尝试仅存储用户ID并检查..是否有效..使用身份验证库...可用...并在配置更改中再做一件事..

$config['sess_save_path'] = NULL;
$config['sess_match_ip'] = FALSE;

$config['sess_save_path'] = FCPATH . 'yourfoldername/';
$config['sess_match_ip'] = TRUE;

并在您的.htaccessindex.php文件可用的路径上创建yourfoldername文件夹