所有用户的密码在数据库中不时自动更改

时间:2011-11-25 05:56:02

标签: php mysql codeigniter

我正在使用codeigniter php框架。我遇到的问题是所有用户的密码有时会自动在数据库中获得更改,请帮忙。

这是我的重置代码

    function reset_now($key){
        //key of fourth segment is saved on cookie

$key = $this->uri->segment(4);



        //start validation
        $this->form_validation->set_rules('password','Password','xss_clean|required|alpha_numeric|min_length[6]|max_length[20]|matches[password_conf]|sha1');
        $this->form_validation->set_rules('password_conf','Password Confirmation','xss_clean|required|alpha_numeric|matches[password]|sha1');

        if($this->form_validation->run() == FALSE){


            $this->load->view('account/reset_password');


        }else{


            $this->db->set('password', $this->_salt.$this->input->post('password'));
                    $this->db->where('lostkey', $_POST['lostkey']);
            $this->db->update('users');
            $this->session->set_flashdata('message','Password changed, please login with new password');



                    redirect('account/login');
        //$this->load->view('account/reset_password_complete');
    }

}

1 个答案:

答案 0 :(得分:4)

您可能忘记了密码更新sql中的条件。请重新检查你的sql。密码不会自动更改。当有人试图更改密码时,可能会触发它。


根据提供的代码更新

您的更新条件是, $this->db->where('lostkey', $_POST['lostkey']);

where子句应该使用用户id(数据库中用户的主键)而不是lostkey(我不是这意味着,可能有多个行具有相同的{ {1}})。

因此,您的lostkey子句必须类似于

where