【发布时间】:2020-02-08 07:11:23
【问题描述】:
我遇到了一些奇怪的问题,即会话变量在操作重定向时被重置。
我正在使用 Codeigniter 并在登录后重定向到仪表板操作,在使用 DB 验证凭据后,我在登录操作中获取数据,但是当我使用 redirect() 重定向到仪表板时,会话变量消失了。
Admin.php
<?php class admin extends CI_Controller
{
function login()
{
$login = $this->Admin_model->login($this->input->post()); // <-- verify data and set to session
if($login)
{
$this->session->set_flashdata("success","Logged in Successfully");
var_dump($_SESSION); // <-- able to fetch data from session
// exit();
redirect("admin/dashboard");
}
else
{
$this->session->set_flashdata("error","Invalid Credentials!! Please Try Again!!");
redirect("admin");
}
}
function dashboard()
{
var_dump($_SESSION); // <-- session data is vanished and not able to get userdata('id')
exit();
if($this->session->userdata('id') != '')
{
$data['active_tab'] = "dashboard";
}
else
{
redirect("admin");
}
}
?>
Admin_model.php
<?php Class Admin_Model extends CI_Model
{
function login($data)
{
$user = $this->db->get_where("users",array("username" => $data['username'],
"password" => md5($data['password']),
"is_active" => "1")
)->row_array();
if(!empty($user))
{
$this->set_user_session($user);
return true;
}
else
{
return false;
}
}
function set_user_session($login)
{
$arr = array();
$arr["id"] = $login["id"];
$arr["username"] = $login["username"];
$this->session->set_userdata($arr);
}
?>
在 xampp 和 wamp 中尝试过,所有浏览器,但问题仍然存在,任何帮助将不胜感激。
【问题讨论】:
-
您使用的是什么 CI 版本和什么 PHP 版本?如果将值分配给 $_SESSION 数组,它会起作用吗?
-
我的 CI 版本是 3.1.0 和 php 7.2.18
-
早期的3.1.x版本出现问题,尝试升级到最新的3.1.11,看我的回答:stackoverflow.com/a/46876622/2275490
-
@Vickel 有正确的答案。您需要升级您的 CI 版本。
-
我的相同代码正在运行,但它突然停止运行,仍然需要更新 CI?
标签: php codeigniter xampp wamp