Перейти к содержанию
Авторизация  
desolator

Проверка На Символы В Нике.

Рекомендуемые сообщения

В общем есть такое чудо на питоне как Shadow_name - сервис в донейт шопе для смены ника.

 

  Показать контент

 

 

У этого чуда есть проверка на символы в ник нейме т.е. есть в начале ника символ # если да - возвращаем назад.

Вот этот кусок кода:

htmltext = "<html><body><center>Смена ника:<br>Проверка...<br><br>"
if nick == "":
htmltext += "Вы не ввели желаемый ник! Не используйте символы #$%^&_|<br><br>"
htmltext += "<a action=\"bypass -h Quest 1235_ShadowName step1\">Вернуться.</a></body></html>"
return htmltext
elif nick.startswith("GM.") or nick.startswith("ADM.") or nick.startswith("EGM.") or nick.startswith("-") or nick.startswith(".") or nick.startswith("#") or nick.startswith("%") or nick.startswith("&") or nick.startswith("|"):
htmltext += "Неправильный ник!<br><br>"
htmltext += "<a action=\"bypass -h Quest 1235_ShadowName step1\">Вернуться.</a></body></html>"
return htmltext
elif nick.endswith(".GM") or nick.endswith(".ADM") or nick.endswith(".EGM") or nick.startswith("-") or nick.startswith(".") or nick.startswith("#") or nick.startswith("%") or nick.startswith("&") or nick.startswith("|"):
htmltext += "Неправильный ник!<br><br>"
htmltext += "<a action=\"bypass -h Quest 1235_ShadowName step1\">Вернуться.</a></body></html>"
return htmltext

elif nick.startswith - проверка на символы в начале ника. elif nick.endswith - проверка на символы в конце ника.

 

После того как я ввожу n-oe кл-во раз неверный ник т.е. недопустимый. Меня дропает с сервера вот под таким предлогом

 [iNFO 23:01:18]: AUDIT:[L2PcInstance] player [%^%^%] sent invalid bypass 'Quest 1235_ShadowName step2_',player %^%^% 2

%^%^% - это никнейм который я ввожу, а гс считает что это очень большая трагедия игрок читерит - не верный байпасс и т.п. в последствии дропает меня.

Сборка l2jlovely. Вопрос: Почему он меня дропает и как фиксить?

Спасибо за внимание.

Изменено пользователем desolator

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Может добавить or nick.startswith("^"):

elif nick.endswith(".GM") or nick.endswith(".ADM") or nick.endswith(".EGM") or nick.startswith("-") or nick.startswith(".") or nick.startswith("#") or nick.startswith("%") or nick.startswith("&") or nick.startswith("|"):

Изменено пользователем LifeGame32

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

глупо, ведь у меня в нике нету в начале либо в конце ^

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  В 27.02.2014 в 22:11, desolator сказал:

глупо, ведь у меня в нике нету в начале либо в конце ^

А сделать Проверку startswith и endswith в одно логическое?

Будет не глупо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  В 28.02.2014 в 00:04, LifeGame32 сказал:

А сделать Проверку startswith и endswith в одно логическое?

Будет не глупо.

В один elif? Или что? Подробней распиши пожалуйста, а я пока погуглю каккодитьнапитоне ;[]

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  В 28.02.2014 в 13:52, desolator сказал:

В один elif? Или что? Подробней распиши пожалуйста, а я пока погуглю каккодитьнапитоне ;[]

Да короче все переписывать нужно. Я хоть и не очень шарю в питоне но тут глаза поломать можно.

Конект к базе данных нужно зделать через функцию (убрать из def onAdvEvent)

 

И конечно серьезная ошибка ! Как я понял команда(step3) будет доступна если ввели правильный ник.

А теперь кто то там нехороший отправит через пакет хак команду (Пример: step3 Admin) и получит желаемый ник без проверок. ( elif event.startswith("step3"): )

Так делать не стоит!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Мой тебе совет, завязывай с питоном:) Такое чудо на яве не составит труда по моему, тем более что есть уже пример на питоне:)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  В 28.02.2014 в 14:47, LifeGame32 сказал:

Да короче все переписывать нужно. Я хоть и не очень шарю в питоне но тут глаза поломать можно.

Конект к базе данных нужно зделать через функцию (убрать из def onAdvEvent)

 

И конечно серьезная ошибка ! Как я понял команда(step3) будет доступна если ввели правильный ник.

А теперь кто то там нехороший отправит через пакет хак команду (Пример: step3 Admin) и получит желаемый ник без проверок. ( elif event.startswith("step3"): )

Так делать не стоит!

Ну ник он получит только без проверок на символы, а вот итемы у него в любом случае заберет так как стоит же

if st.getQuestItemsCount(ITEM) < COST

Только вот оно даже по правильному не корректно работает эта чертова проверка на символы. Я бы её совсем убрал но без нее такие чудаса бд выдает в игру...

Изменено пользователем desolator

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

фу-фу-фу, не надо так делать=) Всё делается в 1 цикл и не нужно писать кучу проверок.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Используй паттерны

public static boolean isMatchingRegexp(String text, String template)
       {
               Pattern pattern = null;
               try
               {
                       pattern = Pattern.compile(template);
               }
               catch(PatternSyntaxException e) // invalid template
               {
                       e.printStackTrace();
               }
               if(pattern == null)
                       return false;
               Matcher regexp = pattern.matcher(text);
               return regexp.matches();
       }

if (!(isMatchingRegexp(st1, "[0-9]")) как пример

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...