如CodeIgniter文档中所述,flashdata
是仅在请求中存活的会话,之后它们就会死亡。
现在我已将此机制用于我的登录过程,但是,它失败了。每当我访问该页面时,某个flashdata
仍然存在。
我在登录flashdata
错误的情况下设置了email/pass
,然后返回登录页面,然后设置条件,检查flashdata是否已设置,然后显示错误。现在,每次访问登录页面时都会显示登录失败错误。为什么呢?
以下是登录页面条件,它检查flashdata的可用性(在login.php视图文件中)
if($this->session->flashdata("login-result") == 0)
{
show_fail("رمز عبور یا رایانامه اشتباه می باشد.");
}
我还放了echo()
代码来查看是否设置了flashdata,它显示了正确的值:
echo ($this->session->flashdata("login-result") );
这是我用来设置flashdata的登录条件:
// go with regular registration
$this->db->where("email", $this->input->post("email"));
$this->db->where("password", md5($this->input->post("password")));
$this->db->from("users");
$login_result = $this->db->count_all_results();
if($login_result == 0)
{
$this->session->set_flashdata("login-result", 0);
redirect(base_url("access/login"));
}
else if($login_result > 0)
{
redirect("panel/home");
}
答案 0 :(得分:0)
可能是你为FLASHDATA分配了0
的值,这是一个数字,但在PHP 0中也意味着FALSE,这是未设置的flashdata的常规返回值。
所以试着给它一个值得一试的价值:
$this->session->set_flashdata("login-result", 1);
你会看到
if(!$this->session->flashdata("login-result"))
{
show_fail("رمز عبور یا رایانامه اشتباه می باشد.");
}
会奏效。
如果您想保留0
,请使用严格相等检查:
if($this->session->flashdata("login-result") === 0)
这样它就会检查flashdata是否为的相同值并输入。
有关详细信息,请参阅types comparison chart
答案 1 :(得分:0)
尝试使用$this->session->set_flashdata('your message')