Php CodeIgniter flashdata不会在单个请求后死亡

Php CodeIgniter flashdata不会在单个请求后死亡,php,codeigniter,Php,Codeigniter,正如CodeIgniter文档中所述,flashdata是仅在请求中活动的会话,在请求之后它们就会死亡 现在我已经在我的登录过程中使用了这个机制,但是它失败了。每当我访问页面时,某些flashdata都是活动的 我设置了一个flashdata,在登录电子邮件/通行证错误的情况下,返回登录页面时,我会设置一个条件,检查是否设置了flashdata,然后显示错误。现在,每次我访问登录页面都会显示登录失败错误。为什么? 这是登录的页面条件,用于检查flashdata的可用性(在login.php视图文

正如CodeIgniter文档中所述,
flashdata
是仅在请求中活动的会话,在请求之后它们就会死亡

现在我已经在我的登录过程中使用了这个机制,但是它失败了。每当我访问页面时,某些
flashdata
都是活动的

我设置了一个
flashdata
,在登录
电子邮件/通行证
错误的情况下,返回登录页面时,我会设置一个条件,检查是否设置了flashdata,然后显示错误。现在,每次我访问登录页面都会显示登录失败错误。为什么?

这是登录的页面条件,用于检查flashdata的可用性(在login.php视图文件中)

我还放置了
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"); 
}

可能是您为FLASHDATA指定了值
0
,这是一个确定的数字,但在PHP中,0也意味着FALSE,这是未设置的FLASHDATA的常规返回值

所以试着给它一个真实的值:

$this->session->set_flashdata("login-result", 1);
你会看到的

if(!$this->session->flashdata("login-result"))
{
  show_fail("رمز عبور یا رایانامه اشتباه می باشد.");  
}
会有用的

如果要保留
0
,请使用严格的相等性检查:

这样它将检查flashdata的值和类型是否相同


有关更多详细信息,请参见。

尝试使用
$this->session->set_flashdata(“您的邮件”)

您在代码中正确使用了它,那么您为什么一直称它为flashcard??您可能想解释一下为什么您的答案是(或可能是)正确的,以帮助OP或未来的读者理解您的推理。
if(!$this->session->flashdata("login-result"))
{
  show_fail("رمز عبور یا رایانامه اشتباه می باشد.");  
}
if($this->session->flashdata("login-result") === 0)