我正在用Codeigniter建立一個Ajax登錄& Jquery ...我有一個小問題,返回一個'無效登錄'消息及其竊聽我。Codeigniter 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;
}
}
如果你的模型不返回任何數據,那麼它的失敗......所以你從你的模型返回什麼,如果沒有匹配的數據/ ???嘗試返回false時行數== 0 –
我試圖在num_rows()== 0時添加一個返回false,但它沒有任何區別。這不可能是問題,因爲它返回false並在用戶名正確時顯示錯誤消息,並且密碼爲false,它返回0行,就像應用程序在用戶名不存在時一樣... –
驗證之後( )?你測試它嗎?你如何處理de控制器的結果?嘗試通過返回false if($ query-> num_rows()> 0){...} else {return false; }'並在你的控制器中測試它:'if($ resultofvalidate === false){..return error ...} else {... return success ...}' – VDP