Codeigniter Flash数据未删除

时间:2018-09-02 19:34:24

标签: php database codeigniter codeigniter-3

我的代码实际上并未删除。我正在检查$ user_id变量是true还是false。如果为true,则用户已登录并重定向,如果为false,则创建闪存数据,显示未登录。
问题是一旦创建的闪存数据没有消失,我将在$ user_id变量中从模型返回行数

 $user_id = $this->login_model->login($email,$password);
 if($user_id == true){
    $user_data = array("user_id"=>$user_id,"email"=>$email,"loggedin"=>true);
    $this->session->set_userdata($user_data);
    $this->session->set_flashdata('login_success','You Are Now Logged In');
    redirect('dashboard');
 }else{
    $this->session->set_flashdata('login_failed','Email Or Password Is Incorrect'); 
 }

这是我的模型代码:

$query =$this->db->where('email',$email);
$query =$this->db->where('password',$password);
$result = $this->db->get('users');
   if($result->num_rows() == 1){
      return $result->row(0)->id;
      }else{
         return false;
     }

4 个答案:

答案 0 :(得分:0)

要使push.splitlines()消失 淡出,您需要为此创建一个脚本。

使用它来消失您的 flash_data

flash_data

设置时间间隔,然后在您的 html代码中执行此操作...

setInterval(function()
  {
     $('#flash_data').fadeOut('slow');
  }, 3000);

希望有帮助:)

答案 1 :(得分:0)

步骤01

在模型中,您正在传递return $result->row(0)->id;并检查if($user_id == true){。它永远不会进入功能 boolen!= Intiger

替换此

if($user_id == true){

对此

if($user_id != false){

步骤02

在控制器if and其他. Only one defined with重定向中,您有两种方法

if($user_id == true){ # Must change accroding to step 01
    $this->session->set_flashdata('login_success','You Are Now Logged In');
    redirect('dashboard');
}else{
    $this->session->set_flashdata('login_failed','Email Or Password Is Incorrect'); 
    # missing ??? Maybe redirect('login');
}

redirect添加到login路由中,这将起作用。


  1. Flash数据只能使用一次
  2. Flash数据可在浏览器“刷新”上使用

答案 2 :(得分:0)

使用jQuery消失数据。

<script>
    setTimeout(function () {
        $("#div_id").hide();
    }, 4000);
</script>

答案 3 :(得分:0)

如果仍然找到解决方案,可以尝试我的解决方案

在您的身体上添加onload js函数

<body onload="clearme();">

在底部添加js脚本

<script type="text/javascript">
    function clearme() {
      <?php
        if (isset($_SESSION['msg_success'])):
            unset($_SESSION['msg_success']);
        elseif (isset($_SESSION['msg_error'])):
            unset($_SESSION['msg_error']);
        endif;
     ?>
   }
</script>

每次加载新控制器时,它将清除您的flashdata会话。这对我有用,因为您的问题以前也对我来说是噩梦。