会话变量在Codeigniter php中的redirect()上重置
我面临一些奇怪的问题,会话变量在操作重定向时被重置 我使用Codeigniter并在登录后重定向到仪表板操作,在使用DB验证凭据后在登录操作中获取数据,但当我使用redirect()重定向到仪表板时,会话变量消失 Admin.php会话变量在Codeigniter php中的redirect()上重置,php,codeigniter,xampp,wamp,Php,Codeigniter,Xampp,Wamp,我面临一些奇怪的问题,会话变量在操作重定向时被重置 我使用Codeigniter并在登录后重定向到仪表板操作,在使用DB验证凭据后在登录操作中获取数据,但当我使用redirect()重定向到仪表板时,会话变量消失 Admin.php <?php class admin extends CI_Controller { function login() { $login = $this->Admin_model->login($this->i
<?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");
}
}
?>
<?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);
}
?>
Admin\u model.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");
}
}
?>
<?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中尝试了这一点,但问题仍然是一样的,任何帮助都将不胜感激。您必须使用
this->session->set_userdata()
来设置会话<代码>此->会话->设置\uFlashData()用于设置下次操作后删除的闪存消息。您使用的是哪个版本的CodeIgniter?您可以尝试以下步骤
/
注释会话\u start()
。我们要重新定位会话n_start()使用ctrl+f
)一条注释,上面写着安全为王
。注释掉该注释下的所有行,直到函数结束。在我的例子中,我注释掉了行号315-320ini_集('session.name',$params['cookie_name')
toini\u集('session.id',$params['cookie\u name')代码>
第108行//会话设置保存处理程序($class,TRUE);
第290-296行
//会话设置cookie参数(
//$params['cookie_lifetime'],
//$params['cookie_path'],
//$params['cookie\u domain'],
//$params['cookie\u secure'],
//TRUE//HttpOnly;是的,出于安全原因,这是有意的,不可配置
// );
第305行//ini\u集('session.gc\u maxlifest',$expiration)代码>
希望这可以帮助您……我正在使用相同的方法,即$this->session->set_userdata($arr);设置会话变量,它也会设置,但在检入仪表板操作后会消失。您使用的是什么CI版本和什么PHP版本?如果您为$_会话数组赋值,它是否有效?我的CI版本是3.1.0和php 7.2.18早期的3.1.x版本中报告了一些问题,请尝试升级到最新的3.1.11,请参见我的答案:@Vickel有正确的答案。您需要升级您的CI版本。我的同一代码正在工作,但突然停止工作,仍然需要更新CI?这会导致错误
遇到PHP错误严重性:警告消息:ini_set():会话处于活动状态。此时无法更改会话模块的ini设置文件名:session/session.php行号:305。。。。。!!!!我们需要注释出更多的行以使其工作,但是您能解释一下我们正在禁用的所有东西吗?PHP7升级-*已知会话/COOKIE错误-将PHP5升级到PHP7将解决已知会话/COOKIE错误。$this->session->set_userdata()似乎有问题;每次重定向时,cookie值都会被覆盖。@NitishLad您还评论了什么,您能告诉我吗?