Итак, я создаю простую страницу входа в систему, я использовал этот точный код в другом проекте, и он отлично работает, теперь по какой-то причине он не работает.Я предполагаю, что упускаю что-то очевидное, но через 1 час я не могу найти это.
Версия PHP: 7.2.5
Страница входа в систему:
<?php require "../db.php";
$username = $password = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$username = mysqli_real_escape_string ( $con, $_POST['username']);
$password = mysqli_real_escape_string ( $con, $_POST['password']);
$hash = $con->query("SELECT password FROM users WHERE username = '$username'")->fetch_object()->password;
print_r($password);?><br><?php
$hash2 = password_hash($password, PASSWORD_DEFAULT);
echo $hash2;?><br><?php
print_r($hash);?><br><?php
var_dump(password_verify($password, $hash));
// if (password_verify($password, $hash)) {
// session_start();
// $_SESSION['username'] = $username;
// header("Location: ../seldep.php");
// die();
// }
// else {
// header("Location: ../index.php?1");
// die();
// }
}
?>
Прямо сейчас есть много тестового кода для его тестирования.
Если я создаю новую учетную запись и пытаюсь войти в систему, она возвращает false, но я изменяю ее так, что она берет пароль, введенный пользователем при входе в систему, и хеширует его в том же файле и помещает его через password_verify, он возвращаетправда.Это должно быть точно так же, но это не работает.Есть ли какие-либо очевидные проблемы здесь?
Редактировать: Вот вывод при попытке войти в систему с именем пользователя: 5 и паролем: 5 (Это в базе данных и было просто зарегистрировано.)
$2y$10$wjvfZh5EQPoXDGt89JfyXOA2TMq4MfvAQHNPXte939BcH.9y.3Ecm
$2y$10$L2horMNAcXETSvOPQDCaMOoXtie3VQ4rRWhLhj5OK5.2sqHCnzRWK
$2y$10$uuQshjMaeepm6aY8.4lBne88tFo5oKem54wztm.dLXT
bool(false)
5
Обновление с формой:
<form action="accounts/login.php" method="post">
<div class="z-depth-3 y-depth-3 x-depth-3 grey green-text lighten-4
row" style="display: inline-block; padding: 32px 48px 0px 48px;
border: 1px;
margin-top: 100px; solid #EEE;">
<div class="section"></div>
<div class="section"></div>
<h1 class="grey-text" style="font-size: 20px;"> <?php echo
CLAN_NAME; ?> </h1>
<div class='row'>
<h1 class="grey-text" style="font-size: 20px;"> LOGIN </h1>
<div class='input-field col s12'>
<input class='validate' type="text" name='username' required />
<label for='email'>Username</label>
</div>
</div>
<div class='row'>
<div class='input-field col m12'>
<input class='validate' type='password' name='password' required
/>
<label for='password'>Password</label>
</div>
<label style='float: right;'>
<b style="color: #F5F5F5;">Forgot Password?</b>
</label>
</div>
<br/>
<center>
<div class='row'>
<button style="margin-left:75px;" type='submit'
name='btn_login' class='col s6 btn btn-small white black-text
waves-effect z-depth-1 y-depth-1'>Login</button>
</div>
<div class='row'>
<a href="accounts/register.php" style="margin-left:75px;"
class='col s6 btn btn-small white black-text waves-effect z-
depth-1 y-depth-1'>Request access</a>
</div>
</center>
</div>
</form>
Плохо, вот, пожалуйста: (ОБНОВЛЕНИЕ / РЕДАКТИРОВАТЬ)
<?php require "../db.php" ?>
<?php session_start(); ?>
<?php
$username = $email = $password = $password2 = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$username = mysqli_real_escape_string ( $con, $_POST['username']);
$email = mysqli_real_escape_string ( $con, $_POST['email']);
$password = mysqli_real_escape_string ( $con, $_POST['password']);
$password2 = mysqli_real_escape_string ( $con, $_POST['password2']);
if ($password == $password2) {
$hash = password_hash($password2, PASSWORD_DEFAULT);
$sql = "INSERT INTO users (username, email, password)
VALUES ('$username', '$email', '$hash')";
if ($con->query($sql) === TRUE) {
header("Location: register.php?rg");
die();
} else {
echo "Error: " . $sql . "<br>" . $con->error;
}
} else {
header("Location: register.php?passwordDontMatch");
}
}
?>
Обновлено с формой регистра:
<form action="registerdone.php" method="post">
<div class="z-depth-3 y-depth-3 x-depth-3 grey green-text lighten-4 row" style="display: inline-block; padding: 32px 48px 0px 48px; border: 1px; margin-top: 100px; solid #EEE;">
<div class="section"></div>
<div class="section"></div>
<div class='row'>
<h1 class="grey-text" style="font-size: 20px;"> REQUEST ACCESS </h1>
<!-- Defining the username -->
<div class='input-field col s12'>
<input class='validate' type="text" name='username' id='email' required />
<label for='email'>Username</label>
</div>
<!-- Defining the email -->
<div class='input-field col s12'>
<input class='validate' type="text" name='email' id='email' required />
<label for='email'>Email</label>
</div>
</div>
<div class='row'>
<!-- Defining the password -->
<div class='input-field col m12'>
<input class='validate' type='password' name='password' id='password' required />
<label for='password'>Password</label>
</div>
<!-- Confirming the passwords matching -->
<div class='input-field col m12'>
<input class='validate' type='password' name='password2' id='password' required />
<label for='password'>Confirm password</label>
</div>
</div>
<br/>
<center>
<div class='row'>
<button style="margin-left:75px;" type='submit' name='btn_login' class='col s6 btn btn-small white black-text waves-effect z-depth-1 y-depth-1'>Request access</button>
</div>
<div class='row'>
<a href="../index.php" style="margin-left:75px;" class='col s6 btn btn-small white black-text waves-effect z-depth-1 y-depth-1'>Login page</a>
</div>
</center>
</div>
</form>
Обновление с выводом из этого:
$hash = password_hash($password, PASSWORD_DEFAULT);
print_r($hash);?><br><?php
var_dump($hash);?><br><?php
$hash2 = password_hash($password2, PASSWORD_DEFAULT);
print_r($hash2);?><br><?php
var_dump($hash2);?><br><?php
die();
вывод выглядит следующим образом:
string(60) "$2y$10$VECqLlJwpndtDSv3r/U4z.4JsIZjXoFUuj7ALkzlFQuTeUKVcK/ze"
$2y$10$x8MLKNwcvbhY7AoYxPiFyOaEazE2rfS2nbqVetATATuH1QpnwLa96
string(60) "$2y$10$x8MLKNwcvbhY7AoYxPiFyOaEazE2rfS2nbqVetATATuH1QpnwLa96"
$2y$10$VECqLlJwpndtDSv3r/U4z.4JsIZjXoFUuj7ALkzlFQuTeUKVcK/ze