PHP/MySQL | Новая порция проблем!
Завершил создание надоевшего мне стартового квеста. Продумал сохранение игрока после квеста. НО...
Вводит игрок все данные(логин, пароль, сторону, пол и т.д.), жмёт кнопку, и его выбрасывает на главную для повторной авторизации с заданными в процессе сохранения логином и паролем... Но я задумывал так, чтобы после сохранения игрок мог сразу продолжить играть без повторной авторизации... Какие есть варианты?
Да, совсем забыл, код сохранения ниже...
Вводит игрок все данные(логин, пароль, сторону, пол и т.д.), жмёт кнопку, и его выбрасывает на главную для повторной авторизации с заданными в процессе сохранения логином и паролем... Но я задумывал так, чтобы после сохранения игрок мог сразу продолжить играть без повторной авторизации... Какие есть варианты?
Да, совсем забыл, код сохранения ниже...
<?
require_once ('system/func.php');
require_once ('system/header.php');
auth();
echo '<div class="title"> Сохранение! </div>';
echo '<div class="block center">';
if(isset($_GET['success'])){
$name = text($_POST['name']);
$pass = text($_POST['pass']);
$repass = text($_POST['repass']);
$sex = text($_POST['sex']);
$side = text($_POST['side']);
$save = 1;
$sql = mysql_query("SELECT COUNT(`id`) FROM `users` WHERE `login` = ".$name.""); // Доступность логина
$query = mysql_query("SELECT COUNT(`id`) FROM `users` WHERE `email` = ".$mail.""); // Доступность почты
$mail = text($_POST['mail']);
if(empty($name)) msg('Введите логин');
elseif(empty($pass)) msg('Введите пароль');
elseif(empty($repass)) msg('Введите пароль еще раз');
elseif(empty($mail)) msg('Введите почтовый ящик');
elseif (!preg_match('|^[a-z0-9\-]+$|i', $pass)) msg('Кириллица в пароле запрещена');
elseif(mysql_result($sql, 0) > 0) msg('Такой логин уже занят');
elseif(mysql_result($query, 0) > 0) msg('Такой почтовый ящик уже используется');
elseif(mb_strlen($name) > 20 or mb_strlen($name) < 3) msg('Логин не может быть короче 3 и длинее 20 символов');
elseif(mb_strlen($pass) > 20 or mb_strlen($pass) < 3) msg('Пароль не может быть короче 3 и длинее 20 символов');
elseif($pass != $repass) msg('Пароль не совпадают');
elseif($name == $pass) msg('Логин и пароль не должны совпадать');
else {
mysql_query("UPDATE `users` SET `login` = '".$name."', `password` = '".md5($pass)."', `email` = '".$mail."', `sex` = '".$sex."', `side` = '".$side."', `save` = '".$save."', `registr` = '".time()."' WHERE `id` = '".$user['id']."'");
/* ПРИСВАИВАЕМ КУКИ */
setcookie('password', md5($pass), time()+86400*365, '/');
header('location: /');
}
}
echo '
<form action="/save/?success" method="post">
Логин:<br/>
<input type="text" name="name" maxlength="50" value="" placeholder="Введите логин..." /><br/>
Пароль:<br/>
<input type="password" name="pass" maxlength="50" value="" placeholder="Введите пароль..." /><br/>
Пароль еще раз:<br/>
<input type="password" name="repass" maxlength="50" value="" placeholder="Введите пароль еще раз..." /><br/>
Почтовый ящик:<br/>
<input type="text" name="mail" maxlength="50" value="" placeholder="Введите почтовый ящик..." /><br/>
Ваш пол:<br />
<select name="sex"><option value="m">Мужской</option><option value="w">Женский</option></select><br/>
Выберите сторону:<br />
<select name="side"><option value="good">Бандиты</option><option value="evil">Мафия</option></select><br/>
<input type="submit" value="Сохранить!" name="success" class="btn"/>
</form>';
echo '</div>';
require_once ('system/footer.php');
?>
require_once ('system/func.php');
require_once ('system/header.php');
auth();
echo '<div class="title"> Сохранение! </div>';
echo '<div class="block center">';
if(isset($_GET['success'])){
$name = text($_POST['name']);
$pass = text($_POST['pass']);
$repass = text($_POST['repass']);
$sex = text($_POST['sex']);
$side = text($_POST['side']);
$save = 1;
$sql = mysql_query("SELECT COUNT(`id`) FROM `users` WHERE `login` = ".$name.""); // Доступность логина
$query = mysql_query("SELECT COUNT(`id`) FROM `users` WHERE `email` = ".$mail.""); // Доступность почты
$mail = text($_POST['mail']);
if(empty($name)) msg('Введите логин');
elseif(empty($pass)) msg('Введите пароль');
elseif(empty($repass)) msg('Введите пароль еще раз');
elseif(empty($mail)) msg('Введите почтовый ящик');
elseif (!preg_match('|^[a-z0-9\-]+$|i', $pass)) msg('Кириллица в пароле запрещена');
elseif(mysql_result($sql, 0) > 0) msg('Такой логин уже занят');
elseif(mysql_result($query, 0) > 0) msg('Такой почтовый ящик уже используется');
elseif(mb_strlen($name) > 20 or mb_strlen($name) < 3) msg('Логин не может быть короче 3 и длинее 20 символов');
elseif(mb_strlen($pass) > 20 or mb_strlen($pass) < 3) msg('Пароль не может быть короче 3 и длинее 20 символов');
elseif($pass != $repass) msg('Пароль не совпадают');
elseif($name == $pass) msg('Логин и пароль не должны совпадать');
else {
mysql_query("UPDATE `users` SET `login` = '".$name."', `password` = '".md5($pass)."', `email` = '".$mail."', `sex` = '".$sex."', `side` = '".$side."', `save` = '".$save."', `registr` = '".time()."' WHERE `id` = '".$user['id']."'");
/* ПРИСВАИВАЕМ КУКИ */
setcookie('password', md5($pass), time()+86400*365, '/');
header('location: /');
}
}
echo '
<form action="/save/?success" method="post">
Логин:<br/>
<input type="text" name="name" maxlength="50" value="" placeholder="Введите логин..." /><br/>
Пароль:<br/>
<input type="password" name="pass" maxlength="50" value="" placeholder="Введите пароль..." /><br/>
Пароль еще раз:<br/>
<input type="password" name="repass" maxlength="50" value="" placeholder="Введите пароль еще раз..." /><br/>
Почтовый ящик:<br/>
<input type="text" name="mail" maxlength="50" value="" placeholder="Введите почтовый ящик..." /><br/>
Ваш пол:<br />
<select name="sex"><option value="m">Мужской</option><option value="w">Женский</option></select><br/>
Выберите сторону:<br />
<select name="side"><option value="good">Бандиты</option><option value="evil">Мафия</option></select><br/>
<input type="submit" value="Сохранить!" name="success" class="btn"/>
</form>';
echo '</div>';
require_once ('system/footer.php');
?>
Антимат у нас очень мощный, поэтому поле s.e.x оно заменило на МАТ:D
Убираем старые кукки, за ними начинаем новые с новыми данными
Актуально!