0

これは、to フィールドとして電子メールとパスワードを使用したログイン フォームからのものです。

echo form_open('main/login_validation');

echo "<P>Email: </br>";
echo form_input('email',$this->input->post('email'));
echo "</P>";

echo "<P>Password: </br>";
echo form_password('password');
echo "</P>";

echo "<P>";

$img_path = base_url()."imgs/log_in_0.png";

echo '<input type="image" src="'.$img_path.'">';
echo "</P>";

echo form_close();

フォーム検証のためにコントローラーに移動します。

$this->load->library('form_validation');

$this->form_validation->set_rules('email', 'Email', 'required|trim|xss_clean|callback_validate_credentials');

$this->form_validation->set_rules('password', 'Password', 'required|trim');

if($this->form_validation->run()){
        $data = array(
            'email' => $this->input->post('email'),
            'is_logged_in' => 1
        );
        $this->session->set_userdata($data);

        $nKey ='members';
        $this->page($nKey);
    } else {
        $nKey ='login';
        $this->page($nKey);
    }

コールバックはそれを次の宛先に送信します。

public function validate_credentials(){
    $this->load->model('model_users');

    $salt = $this->model_users->get_salt();

    if($this->model_users->can_log_in($salt)){

        return true;
    }else{

    $this->form_validation->set_message('validate_credentials', 'Incorrect Email/Password.');
    return false;
    }

}

get_salt() を呼び出すと、モデルからロードされます。

public function get_salt(){

    $this->db->where('email', $this->input->post('email'));


    $query = $this->db->get('users');

    if($query){

        $row = $query->row();

        $salt =  $row->salt;

        return $salt;
    }else{
        echo 'failed salt';

    }

}

この同じコード ワードは 2 日前には問題ありませんでしたが、現在は非オブジェクト エラーが発生します。

$salt =  $row->salt;

クエリを正しくロードしません。ポスト配列から codeigniterfunction $this->input->post('email')でエコーし、正しいメールをエコーし​​ました。

しかしprint_r、クエリを実行すると空のクエリオブジェクトが返されますが、メールはユーザーデータベーステーブル (メールフィールドとすべて) にあります。確認しましたが、この同じアカウントを使用して数日前にテストを行っていました。

4

1 に答える 1

0

間違ったパスワードを入力し、ユーザーが存在するかどうかをテストしたため、エラーが発生しました。

ユーザーが存在するかどうかをテストするコード:

CodeIgniter - 値がデータベースに既に存在するかどうかを確認する

受け入れられた答えで

于 2012-12-15T20:08:32.710 に答える