|
WWW Web интерфейс для MaNGOS |
|
Опции темы | Поиск в этой теме | Опции просмотра |
01.06.2010, 09:16 | #1 |
Новичок
Регистрация: 28.04.2010
Адрес: Беларусь, Мозырь
Сообщений: 27
Сказал(а) спасибо: 12
Поблагодарили 6 раз(а) в 4 сообщениях
Записей в дневнике: 1
|
Простая страница восстановления пароля
Написал простой скрипт восстановления пароля. Пароль в БД меняется, но в игру все равно заходит по старому паролю. Вопрос, как можно сделать так, чтобы после смены пароля сразу в игру можно было зайти по новому паролю?
Вот окончательный и переделанный вариант скрипта. PHP код:
Последний раз редактировалось deadangel; 04.06.2010 в 14:47. Причина: обновил скрипт |
3 пользователя(ей) сказали cпасибо: | StinK (01.06.2010) |
01.06.2010, 10:48 | #3 | ||
Умный
Регистрация: 07.03.2010
Адрес: Северный Урал (60°сш, 60°вд)
Сообщений: 330
Сказал(а) спасибо: 82
Поблагодарили 399 раз(а) в 120 сообщениях
Записей в дневнике: 30
|
Цитата:
Вот тут: Цитата:
Последний раз редактировалось Кот ДаWINчи; 02.08.2010 в 07:10. |
||
01.06.2010, 18:36 | #4 |
Ученый
Регистрация: 17.05.2010
Сообщений: 148
Сказал(а) спасибо: 18
Поблагодарили 25 раз(а) в 22 сообщениях
|
Только использовать LIKE в данном запросе совершенно неверно.
Да и вобще если использовать текущий вариант скрипта не безопасно. |
02.06.2010, 11:39 | #5 |
Новичок
Регистрация: 28.04.2010
Адрес: Беларусь, Мозырь
Сообщений: 27
Сказал(а) спасибо: 12
Поблагодарили 6 раз(а) в 4 сообщениях
Записей в дневнике: 1
|
Потенциально LIKE конечно опасен, но в конкретном случае я не вижу проблемы, как с его помощью можно взломать БД. Более того, у меня база персонажей хранится уже 3 года и раньше пользователи создавали имена аккаунтов в разном регистре и по сей день вводят их в этом регистре. Если ставить вместо Like условие равенства, то большая часть запорется. Т.к. все аккаунты давно уже хранятся в UP регистре.
Спасибо всем. В запросе установил обнуление полей V, S и sessionkey. пароль начал меняться как положено. Вот работающая версия скрипта. Может кому нибудь и пригодится Код:
$psswd = str_shuffle(substr(md5(rand(1,1024)), 0, 6)); $sql = "UPDATE `account` SET `sha_pass_hash`=SHA1(CONCAT(UPPER('$login'),':',UPPER('$psswd'))), `locked`=0, `v`=NULL, `s`=NULL, `sessionkey`=NULL WHERE `username` LIKE '$login' AND `email` LIKE '$email'"; $result = mysql_query($sql) or die(error(mysql_error().'</p><p>'.$sql)); Последний раз редактировалось deadangel; 02.06.2010 в 14:19. Причина: Забыл удалить пароли к БД :) |
02.06.2010, 11:58 | #6 |
Ученый
Регистрация: 17.05.2010
Сообщений: 148
Сказал(а) спасибо: 18
Поблагодарили 25 раз(а) в 22 сообщениях
|
Вместо использования достачно внести в настройки sql нечуствительность регистра при равенстве.
А помешать очень просто можно сбросить пароль другому человеку. |
Пользователь сказал cпасибо: | tempura (02.06.2010) |
02.06.2010, 12:18 | #7 |
Новичок
Регистрация: 28.04.2010
Адрес: Беларусь, Мозырь
Сообщений: 27
Сказал(а) спасибо: 12
Поблагодарили 6 раз(а) в 4 сообщениях
Записей в дневнике: 1
|
Согласен. Если добавить % в имя пользователя, то как вариант он сбросит пароли. В таком случае придется делать регистронезависимое сравнение и для e-mail. Сейчас переделаю и сброшу окончательный вариант.
|
Пользователь сказал cпасибо: | tempura (02.06.2010) |
02.06.2010, 14:16 | #8 |
Новичок
Регистрация: 28.04.2010
Адрес: Беларусь, Мозырь
Сообщений: 27
Сказал(а) спасибо: 12
Поблагодарили 6 раз(а) в 4 сообщениях
Записей в дневнике: 1
|
Вот окончательный вариант скрипта перенес в первый пост. Кто нибудь может подсказать его потенциально опасные моменты? В принципе у меня сервер настроен на независимость регистров при сравнении. Но если кому-то понадобится, то проще данные пользователя и БД приводить к верхнему регистру. В общем всех благодарю за помощь.
Последний раз редактировалось deadangel; 04.06.2010 в 14:29. |
Пользователь сказал cпасибо: |
02.06.2010, 16:38 | #9 |
Forum bot
Регистрация: 01.02.2010
Адрес: пусто
Сообщений: 841
Сказал(а) спасибо: 286
Поблагодарили 418 раз(а) в 190 сообщениях
Записей в дневнике: 60
|
Оба молодцы!
Простите, но просто вот ради именно такого общения и создан форум. Не ради "дайти ресофку скочадь", а ради вас, ребята!
__________________
Совершенно безопасен для людей, обладающих хотя бы некоторыми минимальными зачатками интеллекта, и способными строить причинно-следственные цепочки. |
04.06.2010, 11:21 | #10 |
Гость
Сообщений: n/a
|
PHP код:
Ну и мелкая придирочка CONCAT(UPPER('foo'), ':', UPPER('bar')) == UPPER(CONCAT('foo', ':', 'bar')) Последний раз редактировалось Mic; 04.06.2010 в 11:24. |
Пользователь сказал cпасибо: | deadangel (04.06.2010) |