2015-09-21 4 views
-2

Хорошо, поэтому я пытаюсь создать базовую систему аутентификации пользователей. Ну, я уже это сделал. Но то, что я пытаюсь сделать сейчас, - это проверить пароль пользователей на хэш. Я использую $ hash = password_hash ($ password, PASSWORD_DEFAULT); но для страницы входа я хочу проверить пароль пользователей с хешированным паролем в базе данных, чтобы они могли войти в систему. Как я могу это сделать?Пользовательские идентификаторы паролей пользователей

register.php:

<?php 
include('config.php'); 

if ($conn->connect_error) { 
die("Connection failed: " . $conn->connect_error); 
} 

function mres($input){ 
    if (get_magic_quotes_gpc()){ 
     $input = stripslashes($input); 
    } 
    return mysqli_real_escape_string($conn, $_POST['$input']); 
} 

$email=mysqli_real_escape_string($conn, $_POST['email']); 
$username=mysqli_real_escape_string($conn, $_POST['username']); 
$password=mysqli_real_escape_string($conn, $_POST['password']); 
$hash = password_hash($password, PASSWORD_DEFAULT); 
$query = $conn->query("select * from users where username='$username'"); 
$rows = mysqli_num_rows($query); 
if ($rows == 1) { 
echo "User already exist redirecting in 5 seconds!"; 
} else { 
$sql = "INSERT INTO users (username, password, email) 
VALUES ('$username', '$hash', '$email')"; 
if ($conn->query($sql) === TRUE) { 
echo "New record created successfully"; 
} else { 
echo "Error: " . $sql . "<br>" . $conn->error; 
} 
} 

$conn->close(); 
header("Location: ../index.php"); 
?> 

login.php:

<?php 
session_start(); 
include('config.php'); 

$error=''; 

if (isset($_POST['submit'])) { 
if (empty($_POST['userid']) || empty($_POST['passid'])) { 
$error = "Username or Password is invalid"; 
} 
else 
{ 


$user=mysqli_real_escape_string($conn, $_POST['userid']); 
$pass=mysqli_real_escape_string($conn, $_POST['passid']); 
$hash = password_hash($pass, PASSWORD_DEFAULT); 
$passv = password_verify($pass, $hash); 
$query = $conn->query("select * from users where password='$passv' AND username='$user'"); 
$rows = mysqli_num_rows($query); 
if ($rows == 1) { 
$_SESSION['login_user']=$username; 
$_SESSION['username']=$user; 
$_SESSION['checklogin']== true; 
header("location: ../profile.php"); 
} else { 
$error = "Username or Password is invalid"; 
} 
mysqli_close($conn); 
} 
} 
?> 

(Да я знаю, я добавил, что функция Там, что им не используется в реестре Сво для использования в будущем им сохранить его для. теперь у меня есть планы.)

+0

Прочтите эту документацию http://php.net/manual/en/function.password-verify.php – Scuzzy

+0

Я всего лишь продолжаю давать мне недействительный пароль. –

+0

Я уверен, что он генерирует новый хэш для проверки пароля, когда он не должен. Мне просто нужно проверить этот пароль для этого хэша или что-то еще, что нужно сделать для входа в систему. –

ответ

0

Выберите пароль из базы данных, используя имя пользователя. Получите хэш-пароль из базы данных и используйте password_verify (inputPassword, hashPassword) с инструкцией if.

Смежные вопросы