Пытаюсь осваивать php. И застрял на авторизации пользователя. Функция password_verif постоянно false возвращяет и я не могу найти ошибку.
вот код на авторизацию
session_start();
header("HTTP/1.0 401 Unauthorized");
require_once 'secure.inc.php';
if ($_SERVER['REQUEST_METHOD'] == "POST") {
$login = trim(strip_tags($_POST['login']));
$pw = trim(strip_tags($_POST['pw']));
$ref = trim(strip_tags($_GET['ref']));
if (!$ref) {
$ref = 'eshop/admin/';
}
if ($login and $pw) {
if ($result = userExists($login)) {
list($_, $hash) = explode(':', $result);
if (checkHash($pw, $hash)) {
$_SESSION['admin'] == true;
header("Location: $ref");
exit;
} else {
$title = 'Неправильное имя пользователя или пароль!2';
}
} else {
$title = 'Неправильное имя пользователя или пароль!1';
}
} else {
$title = 'Заполните все поля формы!';
}
}
?>
<!DOCTYPE HTML>
<html>
<head>
<title>Авторизация</title>
<meta charset="utf-8">
</head>
<body>
<h1><?= $title?></h1><p>чтоб зайти в админку без пароля, надо закоментить уод в файле admin/secure/session.inc.php</p>
<form action="<?= $_SERVER['REQUEST_URI']?>" method="post">
<div>
<label for="txtUser">Логин</label>
<input id="txtUser" type="text" name="login" value="<?= $login?>" />
</div>
<div>
<label for="txtString">Пароль</label>
<input id="txtString" type="password" name="pw" />
</div>
<div>
<button type="submit">Войти</button>
</div>
</form>
вот функции
<?
define('FILE_NAME', '.htpasswd');
function getHash($password){
$hash = password_hash($password, PASSWORD_DEFAULT); //, PASSWORD_BCRYPT
return $hash;
}
function checkHash($password, $hash){
return password_verify($password, $hash);
}
function saveUser($login, $hash) {
$str = "$login:$hash\n";
if (file_put_contents(FILE_NAME, $str, FILE_APPEND)) {
return true;
} else {
return false;
}
}
function userExists($login) {
if (!is_file(FILE_NAME)) {
return false;
}
$users = file(FILE_NAME);
foreach ($users as $user) {
if (strpos($user, $login . ':') !== false) {
return $user;
}
}
return false;
}
function logOut (){
session_destroy();
header('Location: secure/login.php');
exit;
}
хэш уже перепроверял 1100 раз, всегда фолс....
кому не лень гляньте
тут понятней будет, для знающего, думаю делов на 10 минут..я уже 3 день парюсь ((
речь идет об этом
function checkHash($password, $hash){
return password_verify($password, $hash);
}