我有一个登录表单,我正在做两部分验证:客户端和服务器端。客户端:检查电子邮件是否有效,检查密码是否至少为 6 个字符等。如果客户端出现问题,我可以在与登录表单相同的页面上向用户显示错误消息,因为该页面从未得到重新加载,因为如果客户端验证不正确,它不会向服务器发送帖子。
但是如果它是真的,那么我正在做一个服务器端验证 - > 检查电子邮件和密码是否匹配以有效地登录到网站。但如果登录凭据不匹配,我需要显示错误消息。这是我卡住的部分。我在哪里以及如何在同一页面(登录表单)上收到消息,因为页面被发布和刷新,所以我丢失了数据。现在,当凭据不正确时,我将用户重定向回登录页面,但没有任何消息。但我正在努力实现他会看到“凭证不正确”的消息。有人可以帮我弄这个吗?
登录视图
<?php
$loginEmail = array('placeholder' => "Email", 'name' => "loginEmail");
$loginPassword = array('placeholder' => "Wachtwoord", 'name' => "loginPassword");
$loginSubmit = array('name' => "loginSubmit", 'class' => "btn", 'value' => "Inloggen");
echo form_open('login/inloggen', array('class' => 'grid-100 formc'));
echo form_input($loginEmail, set_value('loginEmail'));
echo form_password($loginPassword);
echo form_submit($loginSubmit);
echo form_close();
?>
登录控制器
function index(){
$logged_in = $this->logged_in->is_logged_in();
if($logged_in){
$this->load->view('profile_view');
}
else{
$data['content'] = 'login_view';
$this->load->view('templates/template', $data);
}
}
function inloggen(){
if($this->input->post('loginSubmit')){
if($this->form_validation->run('login_validation_rules') == FALSE){
$this->index();
}
else{
$this->load->model('login_model');
$query = $this->login_model->validate();
if($query){
$data = array(
'username' => $this->input->post('loginEmail'),
'is_logged_in' => true
);
$this->session->set_userdata($data);
redirect('profile');
}
else{
$this->index();// If credentials aren't correct, redirect them to login page. But how I set a message here?
}
}
}
}
登录模式
function validate(){
$this->db->where('email', $this->input->post('loginEmail'));
$this->db->where('password', md5($this->input->post('loginPassword')));
$query = $this->db->get('tbl_users');
if($query->num_rows == 1){
return true;
}
else{
return false;
}
}