Я пытаюсь сделать форму аутентификации с PHP и MySQL, но это не работает, и мне интересно, почему.authentification не работает
Есть ли кто-нибудь, кто может мне помочь? Я сделал хэш пароля в файле прецедента, но они не связаны. Этот независимый.
Спасибо!
<?php
session_start();
function connect_db($host, $port, $db, $username, $password)
{
$pdo = new PDO("mysql:host=$host; port=$port; dbname=$db", $username, $password);
return $pdo;
}
if (isset($_POST["email"]) && isset($_POST["password"]) && !empty($_POST["email"]) && !empty($_POST["password"]))
{
$error_pass= "";
$email = $_POST["email"];
$password = $_POST["password"];
try
{
$pdo = connect_db("localhost", 3306, "*******", "******", "*******");
$sql = $pdo-> prepare("SELECT * FROM users WHERE email = :email AND password = :password");
$sql->bindParam(':email', $email);
$sql->bindParam(':password', $password);
$sql->execute();
$req = $sql->fetch();
echo $req["password"] . "SALUT \n";
var_dump($req["password"]);
if (password_verify($password, $req['password']) == 0) {
session_unset();
$error_pass = "Incorrect email/password";
}
else {
$_SESSION["name"] = $req["name"];
header("Location: index.php", true, 302);
}
}
catch (PDOException $e)
{
echo $e->getMessage();
}
if ($error_pass) {
echo $error_pass;
}
}
else {
echo "Some fields are missing";
}
?>
<!DOCTYPE html>
<html>
<body>
<form method="post" action ="login.php">
<input type="text" name="email">
<input type="text" name="password">
<input type="submit" name="submit" value ="submit">
</form>
</body>
</html>
bindParam должно быть с: так '$ sql-> bindParam (': электронная почта', $ электронная почта);' – Mihai
Да жаль, что это ошибка, но это не решает мою проблему –
наконечник безопасности: вы следует стараться избегать размещения ваших имен пользователей + паролей в Интернете. Кроме того, сделайте этот пароль более сильным, если это тот, который вы планируете использовать на производстве. – mpen