game/modules_data/_changepass.php
2023-01-10 18:30:35 +02:00

226 lines
11 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
/* @var $u User */
use Core\Config;
use User\Email;
use User\Password;
if (!defined('GAME')) {
die();
}
$password = new Password($u->info);
$email = new Email($u->info);
$status = null;
if ($_POST['oldpsw2']) { // remove psw2
if (password_verify((int)$_POST['oldpsw2'], $u->info['pass2'])) {
$u->info['pass2'] = $password->changeSecond(null)['pass2'];
$status = "<b style='color: darkolivegreen'>Второй пароль выключен.</b><br>";
} else {
$status = "<b style='color: red'>Введен не верный второй пароль!</b><br>";
}
}
if ($_POST['num_count']) { //add psw2
$arr = $password->changeSecond((int)$_POST['num_count']);
$status = "<b style='color: red'>Второй пароль: {$arr['pass2']}.<br>
Запомните или запишите, т.к. он не высылается на email и его нельзя как-либо узнать.
Потеряв второй пароль, вы потеряете персонажа!<br>
Этот пароль выслан на ваш email.<br>
</b><br>";
$u->info['pass2'] = $arr['hash'];
}
if (
(
$_POST['oldpass'] && $_POST['npass'] && $_POST['npass2'] ||
$_POST['oldpsw'] && $_POST['oldemail'] && $_POST['newemail']
) &&
$u->info['securetime'] > time()
) {
$status = "<span style='color: red'>Должно пройти не менее трех суток между сменой подтверждения, пароля или email.</span><br>";
} else {
if ($_POST['oldpass'] && $_POST['npass'] && $_POST['npass2']) { /*-------Смена пароля--------*/
if (!password_verify($_POST['oldpass'], $u->info['pass'])) {
$status = "<span style='color: red;'>Неверный старый пароль.</span><br>";
} elseif ($_POST['npass'] !== $_POST['npass2']) {
$status = "<span style='color: red;'>Не совпадают новые пароли.</span><br>";
} else {
$u->info['pass'] = $password->changeFirst($_POST['oldpass'], $_POST['npass']);
$status = "<span style='color: darkolivegreen;'>Пароль удачно сменен.</span><br>";
}
}
if ($_POST['oldpsw'] && $_POST['oldemail'] && $_POST['newemail']) { /*-----Смена e-mail------*/
if (password_verify($_POST['oldpsw'], $u->info['pass'])) {
$status = "<span style='color: red'>Неверный пароль.</span><br>";
} elseif ($u->info['mail'] !== $_POST['oldemail']) {
$status = "<span style='color: red'>Неверный старый E-Mail.</span><br>";
} else {
$u->info['mail'] = $email->change($_POST['oldemail'], $_POST['newemail']);
$status = "<span style='color: darkolivegreen;'>Email удачно сменен.</span><br>";
}
}
}
?>
<form action="main.php?security" method="post" id="security"></form>
<div>
<h3>Настройки безопасности</h3>
<div style="text-align: right">
<input type="button" value="Вернуться" onClick="location.href='main.php';">
</div>
<div><?= $status ?></div>
<div>
Чем выше уровень вашего персонажа, тем больше к нему внимания со стороны злоумышленников.
Чтобы ваш персонаж небыл подвержен взлому, необходимо соблюдать элементарные меры предосторожности.
<br> А именно:
<ol>
<li>
Никогда, ни под каким предлогом, никому не говорите свой пароль.
Ни паладинам, ни администрации не нужно знать ваш пароль.
</li>
<li>
Вводите логин и пароль только на титульной странице
<a href="<?= Config::get('https') ?>" target="_blank"><?= Config::get('https') ?></a>
Ни на каких других сайтах, которые будут как две капли похожие на наш,
и куда вас зазывают обещая на халяву предметы или еврокредиты, не вводите свой пароль!
Иначе Ваш персонаж с вероятностью 95% будет взломан.
</li>
</ol>
Настоятельно рекомендуем прочесть заметку
<a href="<?= Config::get('https') ?>forum/?r=48&rnd=1" target=_blank>Как обезопасить своего персонажа?</a>.
<br><br>
Если вы играете из интернет кафе или компьютерного клуба, где шанс быть взломанным очень высокий,
рекомендуем включить второй уровень защиты (см. ниже)
<br><br>
<fieldset>
<legend><b>Смена пароля</b></legend>
<table>
<tr>
<td style="text-align: right">
Старый пароль:
</td>
<td>
<label>
<input form="security" type=password name="oldpass">
</label>
</td>
</tr>
<tr>
<td style="text-align: right">
Новый пароль:
</td>
<td>
<label>
<input form="security" type=password name="npass">
</label>
</td>
</tr>
<tr>
<td style="text-align: right">
Новый пароль (еще раз):
</td>
<td>
<label>
<input form="security" type=password name="npass2">
</label>
</td>
</tr>
<tr>
<td colspan="2" style="text-align: right">
<input form="security" type=submit value="Сменить пароль" name="changepsw">
</td>
<td></td>
</tr>
</table>
</fieldset>
<FIELDSET>
<LEGEND><B> Смена email </B></LEGEND>
<TABLE>
<TR>
<TD style="text-align: right">
Ваш игровой пароль:
</TD>
<TD>
<label>
<INPUT form="security" TYPE=password NAME=oldpsw size=15 maxlength=31>
</label>
</TD>
</TR>
<TR>
<TD style="text-align: right">
Прежний email:
</TD>
<TD>
<label>
<INPUT form="security" TYPE=text NAME=oldemail size=20 maxlength=50>
</label>
</TD>
</TR>
<TR>
<TD style="text-align: right">
Новый email:
</TD>
<TD>
<label>
<INPUT form="security" TYPE=text NAME=newemail size=20 maxlength=50>
</label>
</TD>
</TR>
<TR>
<TD style="text-align: center" colspan=2>
<INPUT form="security" TYPE=submit value="Сменить email" name=changeemail>
</TD>
</TR>
</TABLE>
</FIELDSET>
<FIELDSET>
<LEGEND><B> Второй уровень защиты </B></LEGEND>
Настоятельно рекомендуем включить второй уровень защиты.<BR>
На компьютере может быть установлен клавиатурный шпион, который записывает все нажатия клавиш, таким
образом,
могут узнать ваш пароль.<BR>
Возможно, в сети компьютеров установлен "сетевой снифер", перехватывающий все интернет пакеты, который легко
покажет все пароли. Чтобы обезопасить себя, вы можете установить своему персонажу второй пароль, который
можно
вводить при помощи мышки (клавиатурным шпионом не перехватить) и который передается на игровой сервер в
зашифрованном виде, не поддающимся расшифровке ("сетевой снифер" не сможет перехватить его).<BR>
<U>Будьте внимательны!</U> Второй пароль отправляется на email один раз,при установке второго уровня защиты!<BR>
<?php
if (!empty($u->info['pass2'])) {
echo "<BR><B>Второй пароль установлен.</B><BR><BR>
Введите второй пароль <INPUT TYPE=password NAME=oldpsw2 size=10 maxlength=8>
<INPUT form='security' TYPE=submit name=changepsw value=\"Выключить второй пароль\" onclick=\"return confirm('Выключить запрос второго пароля при входе в Бойцовский Клуб?')\">";
} else {
?>
Длина пароля:<BR>
<label>
<INPUT form="security" TYPE=radio NAME="num_count" value=4> 4 знака<BR>
</label>
<label>
<INPUT form="security" TYPE=radio NAME="num_count" checked value=6> 6 знаков<BR>
</label>
<label>
<INPUT form="security" TYPE=radio NAME="num_count" value=8> 8 знаков<BR>
</label>
<INPUT form="security" TYPE=submit name=changepsw value="Установить второй пароль"
onclick="return confirm('Система сама придумает вам второй пароль, он будет показан на этой странице, после того, как вы нажмете OK и продублирован на email, указанный при регистрации. Будьте внимательны.\nУстановить второй пароль?')">
<BR>
<?php
}
?>
</FIELDSET>
</div>
</div>
<script>
let elem = document.getElementById('se-pre-con');
elem.parentNode.removeChild(elem);
</script>