Хорошо так в основном, чтобы объяснить, как password_verify работы:
Первый параметр не является хэшированным паролем, от ввода пользователя. Второй параметр - это хешированный пароль, который вы извлекаете из базы данных.
Ниже приведена структура, которую я использую для извлечения базы данных. Это OOP и использует правильные правила кодирования, которые вы должны попробовать и изучить, прежде чем изучать «процедурный» стиль 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. Просто знайте, в следующий раз, что большинство людей откажется вам помочь.
Надеюсь, я помог.
Вы спрашиваете, как хранить хэш в вашей тузда таблицу, или вы хотите знать, как проверить данный хэш от хэша в вашей тузда таблице? –
Я хочу знать, как я получаю хешированный пароль из базы данных и «заполняю» его в переменной $ password –