Модератор форума: LightInDarkness |
Форум Web раздел Сайты / WWW для эмуляторов [Скрипт] Перенос персонажа на другой аккаунт |
[Скрипт] Перенос персонажа на другой аккаунт |
Всем привет! Вчера от нечего делать написал простой скриптик для переноса персонажа на другой аккаунт.
Код <?php mysql_connect("localhost","arcanum","arcanum") or die("Ошибка при соединении с базой данных"); mysql_query("SET character_set_client='utf8'"); mysql_query("SET character_set_results='utf8'"); mysql_query("SET collation_connection='utf8_general_ci'"); ?> <form method="POST" action="go.php"> <center> <table> <tr><td>Введите имя персонажа:</td> <td><input type='text' name="charname"></td></tr> <tr><td>Введите имя аккаунта:</td> <td><input type='text' name="acc"></td></tr> <tr><td>Введите Email аккаунта:</td> <td><input type='text' name="email"></td></tr> <tr><td><input type='submit' value="Перенести персонажа"></td></tr> </table> </form> </center> <?php if (isset($_POST['charname']) && ($_POST['acc']) && ($_POST['email'])) { if (strlen($_POST["charname"]) > 3 && strlen($_POST["acc"]) > 2 && strlen($_POST["email"]) > 3) { if (!preg_match("/^[a-zA-Z0-9]+$/i", $_POST['acc'])) die ("<p>Error: SQL-Injection</p>"); if (!preg_match("/^[a-zA-Z0-9]+$/i", $_POST['charname'])) die ("<p>Error: SQL-Injection</p>"); $newacc = @mysql_result(mysql_query("SELECT id FROM `auth`.`account` WHERE `username`='{$_POST['acc']}' AND `email`='{$_POST['email']}' "),0); if($newacc) { mysql_query("UPDATE `characters`.`characters` SET `account`=$newacc WHERE `name`='{$_POST['charname']}' "); echo "<center>Персонаж '{$_POST['charname']}' успешно перенесён на аккаунт '{$_POST['acc']}'</center>"; } else { echo "<center>Логин не соответстует Email или такого аккаунта не существует</center>"; } } else { echo "<center>Ошибка. Не правильно заполнены формы</center>"; } } ?> Кому понравился, ставим плюсек=) |
Нету проверок существует ли вообще такой перс/акк, так же стоило бы фильтровать переменные, а ещё лучше просто вырезать все спец символы такие как .,'\+-= и т.п., так как ни в нике ни в акке они не используются.
Добавлено (14.09.2011, 16:47) Quote (mizer) Переписал, теперь чтобы перенести нужно знать email аккаунта... не проще проверить логин и пасс того аккаунта на котором перс?
Сообщение # 6 написано 14.09.2011 в 16:47
|
TheChosenOne,
Quote существует ли вообще такой перс/акк Аккаунт сразу вводится новый, без проверки старого. Проверка на наличие не требуется, т.к всеравно выдаст ошибку о не верном заполнении или не соответствии... Зачем вырезать спецсимволы, если их всеравно никто не будет использовать? |
Quote (mizer) Так уж и быть без ограничения=) Quote (mizer) Нифига людям эти ошибки выводить? Максимум можно написать ошибку о проблеме с коннектом к базе ты с php первый день работаешь? Про sql injection не слышал? Единственное что может тебя спасти - это опция magic_quotes_gpc.
Сообщение # 12 написано 14.09.2011 в 17:03
|
Quote (mizer) Прадмур, может ктото этого не знает. И вообще скрипт для админа и якобы не доступен игрокам... И вообще че вы накинулись все? Будто это скрипт для офа? Это простой паблик скрипт. Не нравится - лесом Админу легче поменять одну цифру, чем использовать скрипты с потенциальным ущербом его сохранности mysql сервера.
Сообщение # 14 написано 14.09.2011 в 17:08
|
Прадмур, omg :\
Добавлено (14.09.2011, 17:16) Добавлено (14.09.2011, 18:20)
Сообщение # 15 написано 14.09.2011 в 18:20
|
Quote (mizer) if (!preg_match("/^[a-zA-Z0-9]+$/i", $_POST['email'])) die ("<p>Error: SQL-Injection</p>"); В адресе электронной почты ещё и собаки есть. И лучше не die делать, а в переменную ошибку заносить и потом где-нибудь выводить. Вообще есть функция mysql_real_escape_string, которая экранирует спецсимволы, именно её и нужно использовать. preg_match нужен только для регистрации, что бы убедиться в том, что аккаунт будет состоять только из нужных символов с которыми работает ядро. Да и strlen тоже не уместен, мало ли каким образом они себе аки насоздавали, может там и меньше символов. |
Quote (mizer) Прадмур, ну я вижу ты гуру php=) Я в php далеко не первый день, но и не последний=) Это элементарная логика. Кто сколько этим занимается не имеет значения. Тем более я позже тебя начал php заниматься. Quote (mizer) Все скрипт работает, нормальный со стороны защиты. Почистили бы тему а зачем? пусть каждый знает какие ошибки он может допустить ) |
Ckumunok, загнул ))))
<a class="link" href="http://www.speedtest.net/my-result/3300585799" rel="nofollow" target="_blank"><img src="http://www.speedtest.net/result/3300585799.png" border="0" alt=""/>
Сообщение # 25 написано 17.08.2012 в 12:16
|
безопасно это если будет в лк и там надо водить логин двух аков и два пароля ну и капчу и этого хватит
<a class="link" href="http://www.speedtest.net/my-result/3300585799" rel="nofollow" target="_blank"><img src="http://www.speedtest.net/result/3300585799.png" border="0" alt=""/>
Сообщение # 27 написано 17.08.2012 в 12:53
|
trevan, ослеп?
mysql_query("SELECT id FROM `auth`.`account` WHERE `username`='{$_POST['acc']}' AND `email`='{$_POST['email']}' ")
Сообщение # 29 написано 17.08.2012 в 17:37
|
| |||