【问题标题】:I can't show validation error message when direct page直接页面时我无法显示验证错误消息
【发布时间】:2017-03-13 03:50:24
【问题描述】:

我有这个登录检查功能,当$email$password 错误时我想添加重定向到另一个页面,比如在facebook 页面上登录,当$email$password 不正确时,它们会定向到不同的页面但是仍然登录页面(但不是同一页面)并将错误的消息发送到页面$email$password

function basisdata_cek($password){
    $email = $this->input->post('email');
    $result = $this->login->login($email,$password);
    if($result){
        $sess_array = array();
        foreach($result as $row){
            $sess_array = $arrayName = array('kode_daftar'=>$row->kode_daftar, 'email'=>$row->email, 'password'=>$row->password);
            $this->session->set_userdata('logged_in',$sess_array);
        }
        return true;
    }else{
        $this->form_validation->set_message('basisdata_cek','invalid email or password');
        return false;
    }
}

但问题是当我像这样添加重定向页面时

}else{
    redirect(base_url('index.php/login'),'refresh');
    $this->form_validation->set_message('basisdata_cek','invalid email or password');
    return false;
}

邮箱和密码错误时仍然是直接页面,但form_validation的消息不会显示。

【问题讨论】:

  • 重定向时信息丢失,因为整个过程重新开始。除非您使用会话传递信息,否则下一页调用对最后一页一无所知。

标签: php codeigniter login-script


【解决方案1】:

如果您重定向,则无法获得 form_validation 消息。但是您可以为此使用 flashdata。

将此$autoload['libraries'] = array('session'); 添加到application/config/autoload.php 并将此代码放入您的登录页面

if ($this->session->flashdata('basisdata_cek')) {
    echo '<div class="alert alert-warning">';
    echo '<p>' . $this->session->flashdata('basisdata_cek') . '</p>';
    echo '</div>';
  } 

并在redirect 之前放置flash $this-&gt;session-&gt;set_flashdata 而不是$this-&gt;form_validation-&gt;set_message

 }else{
    $this->session->set_flashdata('basisdata_cek', 'Invalid email or password');
    redirect(base_url('index.php/login'),'refresh');        
    return false;
  }

【讨论】:

  • 请检查我更改答案
猜你喜欢
  • 2018-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-09
  • 1970-01-01
  • 2020-08-06
  • 2016-08-04
相关资源
最近更新 更多