我正在尝试在php中登录网站,但我找不到错误。
虽然我没有得到错误,但它不起作用。
数据库连接工作(我试过)。
所以在HTML中我有一个带有两个输入标签和一个提交按钮的表单:
<form action="?login=1" method="post">
<input class="form-control" type="text" name="username" required="" placeholder="Name" border-radius="3px" />
<input class="form-control" type="password" name="password" required="" placeholder="Password" border-radius="3px" font-size="caption" />
<input text-align="center" type="submit" value="Login »" class="btn btn-white-outline display-4" style="border-radius: 3px !important;">
</form>
这是php代码:
<?php
session_start();
$pdo = new PDO('mysql:host=localhost; dbname=test_db', 'user', 'password');
if(isset($_GET['login'])) {
$username = $_POST['username'];
$password = $_POST['password'];
$statement = $pdo->prepare("SELECT * FROM users WHERE username= :username");
$result = $statement->execute(array('username' => $username));
$user = $statement->fetch();
if ($user !== false && password_verify($password, $user['password'])) {
$_SESSION['name'] = $user['name'];
die('<meta http-equiv="refresh" content="0; URL=/plan.php">');
} else {
$errorMessage = "<p style='color:red;'>
Incorrect username or password.
</p><br>";
}
}
?>
你能帮我吗? 答案 0 :(得分:3)
功能:
password_verify()
期望第二个参数是函数创建的密码的哈希值:
password_hash()
或者将密码作为哈希存储在数据库中。