Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Codeigniter-登录检查始终失败_Php_Codeigniter_Codeigniter 3 - Fatal编程技术网

Php Codeigniter-登录检查始终失败

Php Codeigniter-登录检查始终失败,php,codeigniter,codeigniter-3,Php,Codeigniter,Codeigniter 3,我正在使用codeigniter进行登录和注册,注册工作正常,但登录检查失败,无法找到解决方案 这是模型和控制器 模型(User_Model.php) 控制器(User.php) 公共函数登录() { $email=$this->input->post('email'); $password=$this->input->post('password'); $this->form_validation->set_规则('email','E-mail','required','valid_email

我正在使用codeigniter进行登录和注册,注册工作正常,但登录检查失败,无法找到解决方案

这是模型和控制器

模型(User_Model.php)

控制器(User.php)

公共函数登录()
{
$email=$this->input->post('email');
$password=$this->input->post('password');
$this->form_validation->set_规则('email','E-mail','required','valid_email');
$this->form_validation->set_规则('password'、'password'、'required');
如果($this->form\u validation->run()==FALSE)
{
$data['title']='Login';
$this->load->view('default/header',$data);
$this->load->view('default/login');
$this->load->view('default/footer');
}否则{
如果($this->User\u model->resolve\u User\u login($email,$password))
{
呼应‘一切都好’;
}否则{
//错误
$this->session->set_flashdata('msg','error-mail或password');
重定向(“登录”);
}
}
}
私有函数哈希_密码($password)
{
返回密码\u散列($password,password\u BCRYPT);
}

当我输入正确的电子邮件和密码时,它会显示错误的电子邮件和密码结果。

像这样更改您的型号功能。请注意,如果使用下面的代码,则不再需要验证\u password\u hash()函数

public function resolve_user_login($email, $password)
    {
       $query = $this
                ->db
                ->where('email',$email)
                ->where('password',password_hash($password, PASSWORD_DEFAULT))
                ->limit(1)
                ->get('user');

        if($query->num_rows()>0)
        {
            return $query->result();
        }
        else
        {
            return false;
        }
    }
在控制器中有一点变化

if ($this->User_model->resolve_user_login($email, $password)!==False)
            {
                echo 'Everything is good';

            } 

真的希望这个方法对你有用。如果没有,请在注释中指定错误。

如下更改模型函数。请注意,如果使用下面的代码,则不再需要验证\u password\u hash()函数

public function resolve_user_login($email, $password)
    {
       $query = $this
                ->db
                ->where('email',$email)
                ->where('password',password_hash($password, PASSWORD_DEFAULT))
                ->limit(1)
                ->get('user');

        if($query->num_rows()>0)
        {
            return $query->result();
        }
        else
        {
            return false;
        }
    }
在控制器中有一点变化

if ($this->User_model->resolve_user_login($email, $password)!==False)
            {
                echo 'Everything is good';

            } 


真的希望这个方法对你有用。如果没有在注释中指定错误。

目前还没有办法解密像bcyrpt或codeigenter的散列这样的散列,你可以使用php的方法
密码验证(“你的单词”,“散列”)
设置一个条件,如果返回true,则可以登录。

没有办法(目前)解密像bcyrpt或codeigenter的散列这样的散列,您可以使用php的方法
password\u verify('your\u word','the\u hash')
设置一个条件,如果返回true,则您可以登录。

没有函数代码用于登录。
$hash=$this->db->get()->row('password')
从数据库中为您提供所需的密码哈希?如何知道此提供的结果?使用
var\u dump($hash)die()终止脚本
退出()是,结果相同。db password和hash。没有函数代码用于该操作
$hash=$this->db->get()->行('password')
从数据库中为您提供所需的密码哈希?如何知道此提供的结果?使用
var\u dump($hash)die()终止脚本
退出()是,结果相同。db密码和哈希。我没有使用md5加密,我正在控制器中使用以下函数
私有函数hash_password($password){返回密码\u hash($password,password_BCRYPT);}
是,我在问题(控制器)代码中添加了该函数,请现在重试。。我在您的模型中进行了编辑并将md5更改为bcrypt。我在以下行中进行了更改:
->where('password',password\u hash($password,password\u DEFAULT))
->select('password',password\u hash($password,password\u bcrypt))
在用户注册时存储密码时,您是否将bcrypt与任何随机盐一起使用。。密码\u散列函数用于将输入的密码转换为普通bcrypt散列。通过编写一个简单的单独PHP脚本,使用从password_hash函数生成的哈希值检查数据库中的密码哈希值。我没有使用md5加密,我在Controller
private function hash_password($password){return password_hash($password,password_BCRYPT);}
是,我已在问题(控制器)代码中添加了该功能。请现在重试。。我在您的模型中进行了编辑并将md5更改为bcrypt。我在以下行中进行了更改:
->where('password',password\u hash($password,password\u DEFAULT))
->select('password',password\u hash($password,password\u bcrypt))
在用户注册时存储密码时,您是否将bcrypt与任何随机盐一起使用。。密码\u散列函数用于将输入的密码转换为普通bcrypt散列。通过编写一个简单的单独PHP脚本,使用password_哈希函数生成的哈希值检查数据库中的密码哈希值。