Не можете войти, проблемы с проверкой пароля? - PullRequest
0 голосов
/ 06 марта 2019

Вчера я начал делать свой собственный логин + регистрационную форму.

// ...Variable checking...

// Final upload
if ($errornum == 0){
if (!file_exists("../core/accounts/".$username.".php")) {
$password_e = password_hash($password, PASSWORD_DEFAULT, ['cost' => 10]);
$myFile = "../core/accounts/".$username.".php";
$fh = fopen($myFile, 'w');
$stringData = "<?php\n\$username_u = \"{$username}\";\n\$password_u = htmlentities(\"{$password_e}\", ENT_QUOTES);\n\$gender_u = \"{$gender}\";\n\$birth_day_u = \"{$birth_day}\";\n\$birth_month_u = \"{$birth_month}\";\n\$birth_year_u = \"{$birth_year}\";\n\$status_u = \"{$status}\";\n\$email_u = \"{$email}\";\n\$firstname_u = \"{$firstname}\";\n\$lastname_u = \"{$lastname}\";\n\$refer_u = \"{$refer}\";\n?>";
fwrite($fh, $stringData);
fclose($fh);
} else {$username_error.="<div id='error'>Username taken</div>"; $errornum = $errornum + 1;}
}

Это загрузка регистраций.Что он делает: он сохраняет все введенные пользователем переменные в файле, расположенном в core / accounts / user-name.php.

Вот вывод файла, сгенерированного фрагментом кода выше:

// The password is "dummypassword"
// The file name, in this case, is "dummyfile.php"

<?php
$username_u = "dummyfile";
$password_u = htmlentities("$2y$10$1s7uJ4yM5u6KxKdiCh3P0.S/zQRDT4C9DtakCtmJvwR/SxwjVsXzC", ENT_QUOTES);
$gender_u = "male";
$birth_day_u = "3";
$birth_month_u = "2";
$birth_year_u = "1977";
$status_u = "single";
$email_u = "dummyemail@gmail.com";
$firstname_u = "dummy";
$lastname_u = "dummy";
$refer_u = "me";
?>

Как видите, пароль был зашифрован следующей «командой»:

password_hash($password, PASSWORD_DEFAULT, ['cost' => 10]);

Я использую htmlentities ();хранить специальные символы, содержащиеся в пароле.И вот идет сценарий входа в систему ...

// ...Self explanatory code above... No need to include
$submit = trim(stripslashes(strip_tags(($_POST['submit']))));
if(!empty($submit)){
$username = trim(stripslashes(strip_tags(($_POST['username']))));
$password = trim(stripslashes(strip_tags(($_POST['password']))));

if(empty($username) || empty($password)){
		$error=true;
} else {
if (file_exists("core/accounts/".$username.".php")) {
include "core/accounts/".$username.".php";
} else {$error=true;}
if(password_verify($password, $password_u)){
// Logged in!!
$_SESSION['username'] = $username;
header("location:home/");
exit; } else {$error=true;}
}

Опять же, действительно интересная часть - это следующая «команда»:

if(password_verify($password, $password_u)){

Дело в том, что она не работает.Я не могу войтиЭто всегда говорит мне, что у меня неправильный пароль!Я знаю, что ошибка должна быть вызвана командами, которые я упомянул.

Любые советы?

1 Ответ

0 голосов
/ 06 марта 2019

если вы склонны делать то, что делаете, но я этого не понимаю ...

изменить, это ....

if(password_verify($password, $password_u)){

на это...

if(password_verify($password, html_entity_decode($password_u))){
...