【问题标题】:Codeigniter 3 flashdata is always appearingCodeigniter 3 flashdata 总是出现
【发布时间】:2021-12-18 15:42:30
【问题描述】:

我正在使用 codeigniter 3 和 flashdata,以便在插入无效的用户名或密码时向用户显示错误消息。

问题是,即使页面刚刚打开并且没有插入密码或用户名,消息也会一直显示。

编辑: 比较和身份验证是正确的,但是当我打开页面时,即使没有采取任何操作,它仍然会出现。

这是表格

<?php echo $this->session->flashdata('msg');?>

这是控制器

public function authentication(){

    //post user unput
    $empNum=$this->input->post('employeeNum');
    $pwd=$this->input->post('password');

    $user=$this->empNumAuth($empNum, $pwd);

    if($user) {

        if($user['PrivilegeLevel']==='1'){

            $this->session->set_userdata($user);
            redirect('AdminDashboard/view');

        }
        else if($user['PrivilegeLevel']=='2') { 
            
            $this->session->set_userdata($user);
            redirect('UserDashboard/view');
        }

    }

    else {
        $this->session->set_flashdata('msg','الرقم الوظيفي او رمز الدخول خاطئ');
        redirect('Login/LoginPage');
    }

【问题讨论】:

标签: php html css codeigniter


【解决方案1】:

根据您的代码,只要身份验证失败($this->empNumAuth() 返回 false),就会设置 flashdata。因此,如果路径 /authentication 被调用,并且没有输入密码或用户名,它会将空白值传递给 empNumAuth() 函数,它肯定会返回一个错误值(因为传递了空白值,所以身份验证将失败)。否则,如果您觉得不应该显示 flashdata,并且您确定提交了有效的凭据,那么问题出在 empNumAuth() 函数中,从那里开始检查。

奖励: 如果您在错误/成功 div 中回显 flashdata 消息,它将始终显示,上面没有文本。也就是说,假设你有一个红色背景格式的错误 div,当你像你一样直接回显 flashdata 时,错误 div 将显示但带有空白文本。最好的方法是在回显之前检查是否设置了 flashdata。请参见下面的示例。 (我使用了默认的 Bootstrap 错误警报 div)

<?php if($this->session->flashdata('msg'){?>
   <div class="alert alert-danger"><?php echo $this->session->flashdata('msg');?> 
   </div>
<?php } ?>

上面的代码检查是否设置了 flashdata,这将阻止 flashdata div 始终显示。

【讨论】:

    【解决方案2】:

    在视图文件中使用上述代码...

    <?php
     if($this->session->flashdata('msg')
      {
    ?>
       <div class="alert alert-danger"><?php echo $this->session->flashdata('msg');?> 
       </div>
    <?php 
      } 
    ?>
    

    【讨论】:

    • 如果可能,请解释为什么要使用您的代码以及它是如何工作的。只是给出一段代码并说“使用它”并没有帮助。
    猜你喜欢
    • 1970-01-01
    • 2013-07-28
    • 1970-01-01
    • 2022-01-24
    • 2016-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多