当前位置: 首页 > 知识库问答 >
问题:

登录CodeIgniter与password_verify

陶沛
2023-03-14

我试图在CodeIgniter中实现登录实现,我在注册时对密码进行散列,就像password\u散列($this-

public function loginValidation() {
        $this->form_validation->set_rules('email', 'Email', 'trim|required');
        $this->form_validation->set_rules('password', 'Password', 'trim|required');

        if ($this->form_validation->run()) {
            // true
            $email  =   $this->input->post('email');
            $password   =   $this->input->post('password');

            // User Model Loaded in constructor
            if ($this->user->canLogin($email, $password)) {
                $session_data   =   array('email' => $email );
                $this->session->set_userdata($session_data);
                redirect('profile/personal','Refresh');

            } else {
                $this->session->set_flashdata('error', 'Invalid Username or Password');
                //redirect('login','Refresh');

            }
        } else {
            // try again to login
            //redirect('login','Refresh');
        }
    }

我的用户模型函数是

public function canLogin($email, $password) {
    $this->db->where('email',$email);
    $this->db->where('password',$password);
    $query  =   $this->db->get($this->tableName);

    if ($query->num_rows() > 0) {
        return true;
    } else {
        return false;
    }
}

我知道我必须在某个时候验证($string,$hash)密码,但我无法理解。

如何根据电子邮件验证密码,并重定向到所需的视图,即个人/个人资料,我通过AJAX调用发出请求。

共有1个答案

李永寿
2023-03-14

您需要做的是从只有电子邮件匹配的数据库中获取记录(假设它是唯一键)。然后使用password_verify()比较返回的值。
这是非常粗糙和未经测试的,但应该给你一个想法:

public function canLogin($email, $password) {
    $this->db->where('email',$email);
    // $this->db->where('password',$password);
    $query  =   $this->db->get($this->tableName);

    $row = $query->row();
    return $row ? password_verify($password, $row->password) : false;
}
 类似资料:
  • 我尝试使用这个简单的代码登录,但在我点击登录按钮后,else选项“无效用户名或密码!”总是出现,即使用户名和密码是匹配的 控制器:

  • 我将使用CSRF codeigniter和ajax进行安全登录。但是我有一个问题,我的语法。 这是我的表格: 这是我的javascript: 和我的控制器: 我的模型是:

  • 本文向大家介绍Codeigniter注册登录代码示例,包括了Codeigniter注册登录代码示例的使用技巧和注意事项,需要的朋友参考一下 本示例Codeigniter注册登录代码源自一个codeigniter的项目,现分享下~ 由于使用了 Active Record 类,一般数据库操作只有两层,即是C和V controllers/login.php文件: views/login.php文件: s

  • 4.8.1 登出 现在我们来完成登出的功能。修改 routes/signout.js 如下: routes/signout.js const express = require('express') const router = express.Router() const checkLogin = require('../middlewares/check').checkLogin // G

  • 4.8.1 登出 现在我们来完成登出的功能。修改 routes/signout.js 如下: routes/signout.js var express = require('express'); var router = express.Router(); var checkLogin = require('../middlewares/check').checkLogin; // GET

  • (1). 配置路由(已配置过可省略) 配置路由 myobject/myadmin/urls.py 加入如下代码 .... # 后台管理员路由 url(r'^login$', index.login, name="myadmin_login"), url(r'^dologin$', index.dologin, name="myadmin_dologin"), u