В основном то, что мне нужно, чтобы добавить этот код в login.php
, чтобы соответствовать хэш, созданный в register.php
:PHP хеширование паролей и проблемы матч- до
login.php
if (isset($_POST['Login'])) {
$username = $_POST['email'];
$store_password = $_POST['pword'];
check($username, $store_password);
}
function check($username, $pword){
$conn = mysqli_connect('localhost', 'root', 'root', 'Registrar');
$check = "SELECT * FROM Users WHERE email='$username'";
$check_q = mysqli_query($conn, $check) or die("<div class='loginmsg'>Error on checking Username<div>");
if (mysqli_num_rows($check_q) == 1) {
login($username, $pword);
}
else{
echo "<div id='loginmsg'>Wrong Email or Password</div>";
}
}
function login($username, $pword){
$conn = mysqli_connect('localhost', 'root', 'root', 'Registrar');
$login = "SELECT * FROM Users WHERE email='$username' and pword='$pword'";
$login_q = mysqli_query($conn, $login) or die('Error on checking Username and Password');
if (mysqli_num_rows($login_q) == 1){
header('Location: account.php');
echo"<div id='loginmsg'> Logged in as $username </div>";
$_SESSION['username'] = $username;
}
else {
echo "<div id='loginmsg'>Wrong Password </div>";
}
}
в соответствовать хэш пароля в register.php
register.php:
$uname = $_POST['uname'];
$email = $_POST['email'];
$pword = $_POST['pword'];
$store_password = password_hash('pword', PASSWORD_BCRYPT, array('cost' => 10));
Любая помощь будет оценена.
Вы уязвимы для [SQL-инъекций] (http://bobby-tables.com). И вам нужно показать, как вы храните пароль (надеюсь, вы имеете в виду «хэш», вы ** НИКОГДА не храните необработанный пароль открытого текста), и как вы делаете плач/хэширование/сравнение. –
вытащить хеш из базы данных 'ВЫБРАТЬ pword из пользователей, где электронная почта =?' Затем сравните с 'password_verify ($ userSubmittedPassword, $ hashFromDatabase)' И как @MarcB ускользает к, использовать подготовленные заявления запроса, а не строка интерполяции – Steve
хэш хранится в базе данных, а не в текстовом пароле, правильно? – pmahomme