Вчера я начал делать свой собственный логин + регистрационную форму.
// ...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)){
Дело в том, что она не работает.Я не могу войтиЭто всегда говорит мне, что у меня неправильный пароль!Я знаю, что ошибка должна быть вызвана командами, которые я упомянул.
Любые советы?