Loading...
Помощь по скриптам | помощь по коду
Всем привет как решить проблему
регаюся в игре под ником Тест
а захожу под ником тест и пишет что такого пользователя не существует
Смотреть код и исправлять баг
danzo (24.10.2020 в 12:38)
Всем привет как решить проблему
регаюся в игре под ником Тест
а захожу под ником тест и пишет что такого пользователя не существует


Файл Регистрации показывай.
ща
________
посл. ред. 24.10.2020 в 13:02; всего 1 раз(а); by danzo
php
   <?php require_once ('system/func.php'); $title = 'Регистрация'; require_once ('system/header.php');  noauth(); // Закроем от не авторизованных  echo '<div class="title"> Регистрация </div>'; echo '<div class="block center">'; if(isset($_REQUEST['success'])){ $name = text($_POST['name']); $email = text($_POST['email']);  $pass = text($_POST['pass']); $repass = text($_POST['repass']); $sex = text($_POST['sex']); $side = text($_POST['side']);  $sql = mysql_query("SELECT COUNT(`id`) FROM `users` WHERE `login` = '$name'");  // Доступность логина $sqli = mysql_query("SELECT COUNT(`id`) FROM `users` WHERE `email` = '$email'"); // Доступность email   if(empty($name)) $err = 'Введите логин'; if(empty($email)) $err = 'Введите email';  elseif(empty($pass)) $err = 'Введите пароль'; elseif(empty($repass)) $err = 'Введите пароль еще раз';  elseif (!preg_match('|^[a-z0-9\-]+$|i', $pass)) $err = 'Кириллица в пароле запрещена'; elseif(mysql_result($sql, 0) > 0) $err = 'Такой логин уже занят'; elseif(mysql_result($sqli, 0) > 0) $err = 'Такой email уже занят';   elseif(mb_strlen($name) > 20 or mb_strlen($name) < 3) $err = 'Логин не может быть короче 3 и длиннее 20 символов'; elseif(mb_strlen($email) > 40 or mb_strlen($name) < 3) $err = 'email не может быть короче 3 и длиннее 40 символов'; elseif(mb_strlen($pass) > 20 or mb_strlen($pass) < 3) $err = 'Пароль не может быть короче 3 и длиннее 20 символов'; elseif($pass != $repass) $err = 'Пароли не совпадают'; elseif($name == $pass) $err = 'Логин и пароль не должны совпадать'; if(!$err){ if(mysql_query("INSERT INTO `users` SET `login` = '".$name."', `email` = '".$email."', `password` = '".($pass)."', `sex` = '".$sex."', `side` = '".$side."', `registr` = '".time()."',`silver` = '50000', `gold` = '1000'")){ if($_SESSION['ref']){ $id = mysql_insert_id(); mysql_query("update `users` set `id_partner` = '".$_SESSION['ref']."' where (`id` = '".$id."')"); } } if(mysql_num_rows(mysql_query('SELECT * FROM `users` WHERE `ip` = \''.$_SERVER['REMOTE_ADDR'].'\'')) != 0){   $_SESSION['msg'] = 'У вас уже есть аккаунт регестрировать более одного аккаута в игре ЗАПРЕЩЕНО.';  header('location: /');   exit;  }  /* ПРИСВАИВАЕМ КУКИ */ setcookie('login', $name, time()+86400*365, '/'); setcookie('password', ($pass), time()+86400*365, '/'); header('location: /'); exit(); }else{ $_SESSION['msg'] = $err; header('location: ?'); exit(); } } echo ' <form action="" method="post"> Логин:<br/> <input type="text" name="name" maxlength="50" value="" placeholder="Введите логин..." /><br/> Email:<br/>  <input type="text" name="email" maxlength="50" value="" placeholder="Введите email..." /><br/>  Пароль:<br/> <input type="password" name="pass" maxlength="50" value="" placeholder="Введите пароль..." /><br/> Пароль еще раз:<br/> <input type="password" name="repass" 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'); ?>   
mysql_query("update `users` set `id_partner` = '".$_SESSION['ref']."' where (`id` = '".$id."')"); - грубая ошибка $_SESSION['ref']. Открытие SQL-инъекции.

mysql_query('SELECT * FROM `users` WHERE `ip` = \''.$_SERVER['REMOTE_ADDR'].'\'')) != 0) - как и тут. SQL-инъекция.
Toruz (24.10.2020 в 13:09)
mysql_query("update `users` set `id_partner` = '".$_SESSION['ref']."' where (`id` = '".$id."')"); - грубая ошибка $_SESSION['ref']. Открытие SQL-инъекции.

mysql_query('SELECT * FROM `users` WHERE `ip` = ''.$_SERVER['REMOTE_ADDR'].''')) != 0) - как и тут. SQL-инъекция.

а как закрыть?
danzo (24.10.2020 в 13:01)
php
   <?php require_once ('system/func.php'); $title = 'Регистрация'; require_once ('system/header.php');  noauth(); // Закроем от не авторизованных  echo '<div class="title"> Регистрация </div>'; echo '<div class="block center">'; if(isset($_REQUEST['success'])){ $name = text($_POST['name']); $email = text($_POST['email']);  $pass = text($_POST['pass']); $repass = text($_POST['repass']); $sex = text($_POST['sex']); $side = text($_POST['side']);  $sql = mysql_query("SELECT COUNT(`id`) FROM `users` WHERE `login` = '$name'");  // Доступность логина $sqli = mysql_query("SELECT COUNT(`id`) FROM `users` WHERE `email` = '$email'"); // Доступность email   if(empty($name)) $err = 'Введите логин'; if(empty($email)) $err = 'Введите email';  elseif(empty($pass)) $err = 'Введите пароль'; elseif(empty($repass)) $err = 'Введите пароль еще раз';  elseif (!preg_match('|^[a-z0-9-]+$|i', $pass)) $err = 'Кириллица в пароле запрещена'; elseif(mysql_result($sql, 0) > 0) $err = 'Такой логин уже занят'; elseif(mysql_result($sqli, 0) > 0) $err = 'Такой email уже занят';   elseif(mb_strlen($name) > 20 or mb_strlen($name) < 3) $err = 'Логин не может быть короче 3 и длиннее 20 символов'; elseif(mb_strlen($email) > 40 or mb_strlen($name) < 3) $err = 'email не может быть короче 3 и длиннее 40 символов'; elseif(mb_strlen($pass) > 20 or mb_strlen($pass) < 3) $err = 'Пароль не может быть короче 3 и длиннее 20 символов'; elseif($pass != $repass) $err = 'Пароли не совпадают'; elseif($name == $pass) $err = 'Логин и пароль не должны совпадать'; if(!$err){ if(mysql_query("INSERT INTO `users` SET `login` = '".$name."', `email` = '".$email."', `password` = '".($pass)."', `sex` = '".$sex."', `side` = '".$side."', `registr` = '".time()."',`silver` = '50000', `gold` = '1000'")){ if($_SESSION['ref']){ $id = mysql_insert_id(); mysql_query("update `users` set `id_partner` = '".$_SESSION['ref']."' where (`id` = '".$id."')"); } } if(mysql_num_rows(mysql_query('SELECT * FROM `users` WHERE `ip` = ''.$_SERVER['REMOTE_ADDR'].''')) != 0){   $_SESSION['msg'] = 'У вас уже есть аккаунт регестрировать более одного аккаута в игре ЗАПРЕЩЕНО.';  header('location: /');   exit;  }  /* ПРИСВАИВАЕМ КУКИ */ setcookie('login', $name, time()+86400*365, '/'); setcookie('password', ($pass), time()+86400*365, '/'); header('location: /'); exit(); }else{ $_SESSION['msg'] = $err; header('location: ?'); exit(); } } echo ' <form action="" method="post"> Логин:<br/> <input type="text" name="name" maxlength="50" value="" placeholder="Введите логин..." /><br/> Email:<br/>  <input type="text" name="email" maxlength="50" value="" placeholder="Введите email..." /><br/>  Пароль:<br/> <input type="password" name="pass" maxlength="50" value="" placeholder="Введите пароль..." /><br/> Пароль еще раз:<br/> <input type="password" name="repass" 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'); ?>   
Данные в таблицу записывается.
Toruz (24.10.2020 в 13:16)
Данные в таблицу записывается.

?
danzo , Данные пишутся, код авторитизации кинь. В нем проблема.
________
посл. ред. 24.10.2020 в 13:36; всего 1 раз(а); by TuT
Онлайн: 1
Время:
Gen. 0.1087
(c) Bym.Guru 2010-2026