battles/user_anketa.php
Igor Barkov (iwork) 3502904656 Рефакторинг, очистка, работа над ошибками, связанными с базой, отказ от глобальной переменной $user во многих файлах.
Singleton в некоторых местах вместо решения #42.
Новые шаги для решения #16 и #52.
Closes #42.
Closes #32.
Closes #31.
2022-01-27 01:15:33 +02:00

53 lines
1.9 KiB
PHP

<?php
use Battles\Template;
use Battles\User;
require_once 'functions.php';
$name = filter_input(INPUT_POST, 'name', FILTER_SANITIZE_STRING);
$oldpsw = filter_input(INPUT_POST, 'oldpsw', FILTER_SANITIZE_SPECIAL_CHARS);
$newpsw = filter_input(INPUT_POST, 'newpsw', FILTER_SANITIZE_SPECIAL_CHARS);
$hobbie = filter_input(INPUT_POST, 'hobbie', FILTER_SANITIZE_STRING);
$hobbie = str_replace("\\n", "<br />", $hobbie);
$hobbie = str_replace("\\r", "", $hobbie);
$hobbie = str_replace("&lt;br&nbsp;/&gt;", "<br />", $hobbie);
if ($name || $hobbie) {
if (strlen($hobbie) > User::INFO_CHAR_LIMIT) {
err('Максимальная длинна поля Хобби: ' . User::INFO_CHAR_LIMIT . ' символов!');
} else {
if ($name) {
User::getInstance()->setRealname($name);
}
if ($hobbie) {
User::getInstance()->setInfo($hobbie);
}
User::getInstance()->saveUser();
}
}
if ($oldpsw && $newpsw) {
if (password_verify($oldpsw, User::getInstance()->getPass())) {
User::getInstance()->setPass(password_hash($newpsw, PASSWORD_DEFAULT));
User::getInstance()->saveUser();
} else {
err('Неверный текущий пароль!');
}
}
Template::header('Анкета');
?>
<a href="main.php">← на главную</a>
<h1>Анкета персонажа <?= User::getInstance()->getLogin() ?></h1>
<form method="post">
<label>
<input name="name" placeholder="Реальное имя" value="<?= User::getInstance()->getRealname() ?>">
Реальное имя
</label><br>
<textarea name="hobbie" placeholder="Хобби"><?= User::getInstance()->getInfo() ?></textarea><br>
<input name="submit" type="submit">
</form>
<h1>Безопасность</h1>
<form method="post">
<input placeholder="Старый пароль" name="oldpsw">
<input placeholder="Новый пароль" name="newpsw">
<input type="submit">
</form>