Codeigniter と Jquery を使用して Ajax ログインを構築しています...「無効なログイン」メッセージが返され、それが私を悩ませているという小さな問題があります。
ログインページには次のものがあります。
$(document).keypress(function (e) {
if (e.which == 13) {
var login = $("#login").val();
var pass = $("#pass").val();
$('#login-block').removeBlockMessages().blockMessage('Please wait, cheking login...', {
type: 'loading'
});
$.post("<?php echo base_url(); ?>index.php/login/validate_credentials/", {
username: login,
password: pass
}, function (data) {
if (data.error) {
$('#login-block').removeBlockMessages().blockMessage(data.message, {
type: 'error'
});
} else {
document.location.href = data.redirect;
}
}, "json");
}
});
このvalidate()
関数は、単純にデータベースにユーザー名とパスワードの一致を照会します。num_rows = 1 の場合、ユーザー データを返します。
ログインしようとすると、これはすべて正常に機能しますが、存在しないユーザー名を入力すると、「不正なログイン」エラーが発生しません...
実際のユーザー名と偽のパスワードを使用すると、エラーが発生します。
ユーザー名とパスが正しければ、正常にログインします。
ユーザー名が存在しない場合に表示されず、エラーになる理由がわかりません。
編集
これがモデルの Validate() 関数です。
function validate() {
// CHECK LOGIN DETAILS
$this->db-> select('first_name,last_name,usertype,id,products,mac');
$this->db-> where('username', $this->input->post('username'));
$this->db-> where('password', md5($this->input->post('password')));
$query = $this->db->get('membership');
if ($query->num_rows() > 0) {
$data = array('usertype' => $row->usertype, 'userid' => $row->id, 'first_name' => $row->first_name, 'last_name' => $row->last_name, 'products' => $row->products, 'mac' = > $row->mac);
return $data;
}
}