Php Codeigniter闪存数据未删除

Php Codeigniter闪存数据未删除,php,database,codeigniter,codeigniter-3,Php,Database,Codeigniter,Codeigniter 3,我的代码实际上没有删除。我正在检查$user\u id变量是true还是false。如果为true,则用户登录并重定向,如果为false,则创建显示未登录的闪存数据。 问题是,一旦创建的闪存数据没有消失,我就在$user\u id变量中返回模型中的行数 $user_id = $this->login_model->login($email,$password); if($user_id == true){ $user_data = array("user_id"=>

我的代码实际上没有删除。我正在检查$user\u id变量是true还是false。如果为true,则用户登录并重定向,如果为false,则创建显示未登录的闪存数据。
问题是,一旦创建的闪存数据没有消失,我就在$user\u 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;
     }

为了使
flash_数据
消失褪色,您需要为此创建一个脚本

使用此选项可消除您的闪存数据

setInterval(function()
  {
     $('#flash_data').fadeOut('slow');
  }, 3000);
设置间隔,然后在html代码中执行此操作

<?php if(($this->session->flashdata('name')=='Hello, I am Flash Data')){?>
     <div class="alert alert-info alert-dismissible fade in" role="alert" id="flash_data"> //set your id here
     <i class="glyphicon glyphicon-ok"></i>  <?php echo $this->session->flashdata('notif'); ?>
     </div>
<?php } ?>

//在这里设置您的id

希望有帮助:)

步骤01

在您传递的模型中
return$result->row(0)->id
并检查
是否($user\u id==true){
。它永远不会进入funtionboolen!=Intiger

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

if($user_id == true){
对此

if($user_id != false){

步骤02

在控制器
if和
else
中有两种方法。只有一种方法是用
重定向定义的`

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');
}
添加
重定向
登录
路由,这将起作用


  • 闪存数据只能使用一次
  • 闪存数据可用于浏览器刷新

  • 使用jQuery删除数据

    <script>
        setTimeout(function () {
            $("#div_id").hide();
        }, 4000);
    </script>
    
    
    setTimeout(函数(){
    $(“#div_id”).hide();
    }, 4000);
    
    如果您仍然找到解决方案,可以尝试我的解决方案

    在身体上添加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>
    
    
    函数clearme(){
    }
    

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

    模型代码与您的问题无关。您如何显示flashdata?可能是重复的,您可以尝试此问题中给出的一些解决方案。它们应该可以工作。显示您的查看页面Hi actually我有一个问题我发现我在同一页上使用表单操作,这就是为什么它会导致这个错误,因为flash数据不断出现。你能帮我解决这个问题吗?如果($this->session->flashdata('login_success')){echo$this->session->flashdata('login_success');}elseif($this->session->flashdata('login_failed')){echo$this->session->flashdata('login_failed');}添加您的问题并添加表单。我通过在另一个页面上更改操作action=“login/login_check”解决了这个问题,但是您能告诉我一种方法,通过这种方法,我可以在同一页面上显示错误,就像在core php if中一样(isset($_POST[''submit])){echo error?>为什么要用javascript包装PHP代码?虽然在语法上是有效的,但它没有语义关系,不会通过调用
    clearme()来执行
    。相反,PHP将在呈现页面时执行代码,而不管任何javascriptIt是否工作,因为您在页面加载时执行PHP代码。没有理由使用任何javascript或onload调用。