と一致するデータがないにもかかわらず、1行を返す私のコントローラここCodeIgniterの - クエリは、ここに
public function login() {
$this->load->model('admin_model');
$access = $this->admin_model->check_login();
$data['content'] = 'content/home';
$data['title'] = 'Admin Panel Login';
if($access) {
$data= array(
'email' => $this->input->post('email'),
'is_logged_in' => true
);
$this->session->set_userdata($data);
redirect('admin/index/dashboard');
} else {
$this->index($page = 'home', $msg = 'failure');
}
は私のモデルは、それでは私が働いてきたことで機能です
public function check_login() {
$this->db->where('email', $this->input->post('email'));
$this->db->where('password', $this->input->post('password'));
$query = $this->db->get('customers');
return (bool) $query->num_rows;
}
ですユーザーがログインするまでユーザーがどのページにもアクセスできないようにする管理コンストラクタです。問題は、admin/loginに行くときに、check_login関数がfalseとして返されていても、is_logged_inをtrueに設定していることです。それは私のDBに今すぐ一致するべきではない行が1つしかないにもかかわらず、行を見つけることです。
私はCIを初めて使っていますので、優しくしてください。 :)
コードを調整しても、機能しません。それはやっているクエリは次のとおりです。 SELECT * FROM ( 'customers') ' email' = 0 と 'password' = 0 、それはcheck_login()のように真を返します。 (0と0はデフォルトで投稿されているものです)おそらく私はそれが正しく構成されていないでしょうか? – ohiock
データベース(CIの外)に対して直接クエリを実行し、返されるものを確認できますか? –
ここに出力があります: "行0 - 0を表示(1合計、クエリは0.0004秒かかりました)"。私はなぜ$アクセスが本当に戻ってくるのか理解できないようです。 – ohiock