这是我写的登录脚本。我使用crypt()来存储散列密码。
<?php
$db = new mysqli ('localhost','bla','bla','bla');
if(isset($_POST['submit_form'])){
$username = $_POST['username'];
$password = $_POST['password'];
$username2 = mysqli_real_escape_string($db, $_POST['username']);
$sql = "SELECT * FROM users WHERE username=:username";
$stmt = $db->prepare($sql);
$stmt->bindValue(':username',$username,PDO::PARAM_STR);
if($stmt->execute())
{
if($stmt->rowCount() == 1)
{
$row = $stmt->fetch(PDO::FETCH_ASSOC);
if (crypt($password, $row['pass']) === $row['pass'])
{
session_start();
$_SESSION['user'] = $username2;
$_SESSION['notification'] = 'blabla';
header('location:/someplace');
}
else
{
session_start();
$_SESSION['not'] = 'wrong';
header('location:/someplace');
}
}
else
{
session_start();
$_SESSION['not'] = 'wrong';
header('location:/someplace');
}
}
}
else {
header('location:/ss');
}
?>
我试图解决这个问题很长一段时间。但它没有产生任何结果。通过许多答案搜索,尝试了5-6种不同的方法。还是行不通。我是第一次使用PDO。在此之前,我只使用mysqli_real_escape_string(),它运行正常。