jQuery と CodeIgniter を使用してユーザー ログインを検証しようとしています。そのユーザーが見つかった場合、彼は別のページにリダイレクトされるため、ここで試みているのは、ユーザーが間違ったユーザー名またはパスワードを入力したときにエラー メッセージを表示することです。それが私の主な目的です。
ビュー内には、次のコードがあります。
<?php
$param = 'id="formLogin"';
echo form_open('backOffice/loginCheck', $param);
?>
<label for="username">* user name</label>
<input type="text" name="username" id="username" />
<label for="password">* password</label>
<input type="password" name="password" id="password" />
<input type ="submit" name="login" id="login" value ="LOGIN" />
<?php echo form_close(); ?>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"> </script>
<script src="<?php echo base_url(); ?>backOffice/js/loginscript.js"></script>
さて、loginscript.js のコードは次のとおりです。
btnLogin.on('click', function(errorMessage){
if(userName.val()!='' && password.val() !=''){
$.ajax({
type: 'POST',
url: 'backOffice/loginCheck',
data: 'formLogin.serialize()',
success: function(errorMessage){
console.log('i never get here');
},
dataType: 'jsonp'
});
e.preventDefault();
console.log(errorMessage);
}
})
そして最後に、これがコントローラーからのコードです
public function loginCheck()
{
// set the validation rules
$this->form_validation->set_rules('username', 'Username', 'required|trim|encode_php_tags');
$this->form_validation->set_rules('password', 'Password', 'required|trim|encode_php_tags');
$this->form_validation->set_error_delimiters('<br /><p class=jsdiserr>', '</p><br />');
if ($this->form_validation->run() != FALSE)
{
$ids=array();
$ids[0]=$this->db->where('username', $this->input->post('username'));
$ids[1] = $this->db->where('password', md5($this->input->post('password')));
$query = $this->backOfficeUsersModel->get();
if($query)
{
$data = array(
'username' => $this->input->post('username'),
'isUserLoggedIn' => true
);
$this->session->set_userdata($data);
$data['title'] = "Welcome to dashboard!";
$data['main_content'] = 'dashboard';
$this->load->vars($data);
$this->load->view('backOffice/template');
} else {
$errorMessage = "Wrong Username or Password";
$this->cms(json_encode($errorMessage));
}
} else {
// form validation fail, send the message
// form validation to fail, mean that user has javascript disabled
$errorMessage = "Wrong User Name OR Password.<br /> Please try again!";
$this->cms(json_encode($errorMessage));
}
} // end of function loginCheck