クライアント側とサーバー側の2つの部分の検証を行っているログインフォームがあります。クライアント側: 有効な電子メールかどうか、パスワードが最小 6 文字かどうかなどを確認します。クライアント側で問題が発生した場合は、ログイン フォームと同じページにエラー メッセージを表示できます。クライアント側の検証が真でない場合、サーバーにポストを送信しないため、リロードされます。
しかし、それが本当の場合、サーバー側の検証を行っています->電子メールとパスワードが一致してWebサイトに効果的にログインするかどうかを確認します. しかし、ログイン資格情報が一致しない場合は、エラー メッセージを表示する必要があります。これは私が立ち往生している部分です。ページが投稿および更新されてデータが失われるため、同じページ (ログインフォーム) でメッセージを受け取る場所と方法を教えてください。資格情報が正しくない場合、ユーザーをログインページにリダイレクトしますが、メッセージは表示されません。しかし、「資格情報が正しくありません」というメッセージが表示されるようにしようとしています。誰かがこれで私を助けることができますか?
ログインビュー
<?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;
}
}