如何检索登录php的哈希密码
我正在尝试建立我的第一个登录系统,我是一个初学者 我想从数据库中检索密码,并使用此代码检查登录如何检索登录php的哈希密码,php,sql,database,Php,Sql,Database,我正在尝试建立我的第一个登录系统,我是一个初学者 我想从数据库中检索密码,并使用此代码检查登录 if (password_verify($password, $hash)) { echo 'Password is valid!'; } 数据库中的密码是使用 $hash = password_hash($_POST['password'], PASSWORD_DEFAULT)."\n"; 我知道我应该使用sql SELECT password FROM $tbl_name WHERE
if (password_verify($password, $hash)) {
echo 'Password is valid!';
}
数据库中的密码是使用
$hash = password_hash($_POST['password'], PASSWORD_DEFAULT)."\n";
我知道我应该使用sql
SELECT password FROM $tbl_name WHERE email='$email'
如何将$hash连接到我的sql?好的,基本上解释一下密码验证是如何工作的: 第一个参数是用户输入的非散列密码。第二个参数是从数据库中提取的哈希密码 下面是我用于数据库提取的结构。它是面向对象的,使用正确的编码约定,在学习“过程式”PHP之前,您应该尝试并学习这些约定,因为这是更好的编码方式
class DatabaseConnect{
protected
$host, $user, $pass, $dbname, $con;
public function __construct(){
// Replace these with your database information. dbname is the name of the actual database, not the table.
$this->host = "localhost";
$this->user = "root";
$this->pass = "";
$this->dbname = "test";
}
public function dbConnect(){
try{
$this->con = new PDO("mysql:host=$this->host;dbname=$this->dbname", $this->user, $this->pass);
$this->con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}catch(Exception $ex){
echo $ex->getMessage();
}
}
public function dbDisconnect(){
$this->con = null;
}
}
class Database extends DatabaseConnect{
public function __construct(){
parent::__construct();
}
public function getPassword($username){
$sql = "SELECT password FROM users WHERE username = ?;";
$this->dbConnect();
$stmt = $this->con->prepare($sql);
$stmt->bindParam(1, $username); // This is the username that was passed to the method
$stmt->execute();
$stmt->setFetchMode(PDO::FETCH_ASSOC);
$results = $stmt->fetchAll();
$this->dbDisconnect();
return $results[0]["password"];
}
}
// This is the code that uses the above classes. The classes can be kept in a separate file (and should be).
$database = new Database();
$passFromDatabase = $database->getPassword("pseud");
$passFromInput = $_POST["password"];
if(password_verify($passFromInput, $passFromDatabase)){
echo "Passwords match";
}
第一个类包含连接到数据库的信息/方法。第二个类使用给定的用户名从数据库获取密码,它扩展了第一个类
然后,在类下面,我们使用它们从数据库中获取数据
通常,在StackOverflow上,人们会拒绝做这种事情(给你一个完整的答案,你可以很好地研究一下),但我更愿意实际帮助你:p。下次,请注意,大多数人会拒绝帮助你
希望我能帮上忙。您可能应该先连接数据库,然后尝试匹配哈希 从下面的链接连接数据库教程
您不能在MySQL查询中直接使用
password\u verify
。您需要做的是通过电子邮件从数据库中查询记录,然后使用password\u verify()将从数据库返回的密码散列与输入密码进行比较 按照简单的步骤验证用户。
1.运行数据库查询以通过电子邮件获取用户以获取哈希密码。
2.使用密码\u验证()验证此哈希密码
我们不能在MySQL查询中直接使用密码验证()的原因是密码哈希()每次执行密码哈希()函数时都会生成唯一/不同的密码
您是在问如何将哈希存储到mysql表中,还是想知道如何将给定的哈希与mysql表中的哈希进行对比?我想知道如何从数据库中检索哈希密码并将其“填充”到变量$password对不起,我的帖子一定很模糊。我想知道如何从数据库中检索密码并将其填入变量$passwordOne片刻之后,将提供完整答案,希望对您有所帮助。请添加代码主体,因为链接会在一段时间后过期。