【发布时间】:2019-02-11 20:36:07
【问题描述】:
用户注册工作正常。注册后,此登录页面打开,并显示密码、用户名和哈希是我的选择行上未定义的变量以及当我回显哈希时的消息。 尝试登录时会弹出“无效的登录凭据”错误,但也会弹出“密码有效”,并且还会打印哈希。
if (isset($_POST['username']) and isset($_POST['password'])){
// Assigning posted values to variables.
$username = cleanData($_POST['username']);
$password = cleanData($_POST['password']);
$hash = password_hash($password, PASSWORD_DEFAULT);
$verify = password_verify($password, $hash);
if(password_verify($password, $hash)) {
echo 'Password is valid!';
} else {
echo 'Invalid password.';
}
}
// Checking if the values exist in the database or not
$query = "SELECT * FROM `user` WHERE (username='$username') AND (password='$password')";
echo $hash;
$result = mysqli_query($connection, $query) or die(mysqli_error($connection));
$count = mysqli_num_rows($result);
// If the posted values are equal to the database values, then session
is created for the user.
if ($count == 1){
$_SESSION["loggedIn"] = true;
$_SESSION['username'] = $username;
}else{
// error for not matching credentials
$fmsg = "Invalid Login Credentials.";
我怀疑我在 SELECT 语句的位置和要求方面做了一些可怕的错误,但它仍然不能解释为什么这些变量会以未定义的形式出现。也许我可以移动 SELECT 语句来替换“密码有效”消息并从那里开始? CleanData 是一个清理输入的函数。
【问题讨论】:
-
所有这些东西都需要在
if(isset中 -
你指的是哪些东西?
-
所有的东西。需要设置用户名和密码变量的所有内容。