Safari 浏览器中的 codeigniter 会话
codeigniter Session in Safari browser
我们正在使用以下方法检查所有控制器功能的会话。
$this->session->userdata('Admin_logged_in')
https://www.codeigniter.com/user_guide/libraries/sessions.html
但是在使用 Safari 浏览器的 iPhone X 上,它 returns 是一个空值。没有为每个函数设置会话数组,因此用户无法登录界面。
以下是我们尝试过的不同解决方案:
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
如果会话从函数中删除,用户可以登录并且函数可以正常运行。我们开发的所有 Codeigniter 项目都会出现此问题。
检查会话:
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);
为什么要用 Admin_logged_in 检查并用 User_logged_in 设置会话?再次检查您的会话,尤其是您设置会话的位置。
我认为您使用了错误的名称来检查会话。
我们正在使用以下方法检查所有控制器功能的会话。
$this->session->userdata('Admin_logged_in')
https://www.codeigniter.com/user_guide/libraries/sessions.html
但是在使用 Safari 浏览器的 iPhone X 上,它 returns 是一个空值。没有为每个函数设置会话数组,因此用户无法登录界面。
以下是我们尝试过的不同解决方案:
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
如果会话从函数中删除,用户可以登录并且函数可以正常运行。我们开发的所有 Codeigniter 项目都会出现此问题。
检查会话:
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);
为什么要用 Admin_logged_in 检查并用 User_logged_in 设置会话?再次检查您的会话,尤其是您设置会话的位置。
我认为您使用了错误的名称来检查会话。