Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Востановление пароля

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Востановленный пароль не подходит
taxi008
Отправлено: 04 Октября, 2011 - 21:15:18
Post Id



Гость


Покинул форум
Сообщений всего: 109
Дата рег-ции: Сент. 2011  
Откуда: Москва


Помог: 0 раз(а)




Востонавливаю пароль. Сгенерированный новый пароль приходит на мыло. Но при авторизации не проходит (Пишет НЕ ВЕРНЫЙ ПАРОЛЬ).
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  if($_POST['this']){
  3.    $email = htmlspecialchars(trim($_POST['email']));
  4.    //Опознаем пользователя по мылу
  5.    $select = mysql_query("SELECT * FROM users WHERE email = '$email'") or die(mysql_error());
  6.    //Генерируем новый пароль
  7.   $datenow = date('YmdHis');//извлекаем дату
  8.         $new_password = md5($datenow);// шифруем дату
  9.         $new_password = substr($new_password, 2, 6);    //извлекаем из шифра 6 символов начиная со второго. Это и будет наш случайный пароль. Далее запишем его в базу, зашифровав точно так же, как и обычно.
  10.        
  11. $new_password_sh = strrev(md5($new_password))."b3p6f";//зашифровали
  12. mysql_query("UPDATE users SET password='$new_password_sh' WHERE login='$login'",$db);// обновили в базе
  13.         //формируем сообщение
  14.        
  15.         $message = "Здравствуйте, ".$login."! Мы сгененриоровали для Вас пароль, теперь Вы сможете войти на сайт citename.ru, используя его. После входа желательно его сменить. Пароль:\n".$new_password;//текст сообщения
  16.         mail($email, "Восстановление пароля", $message, "Content-type:text/plane; Charset=windows-1251\r\n");//отправляем сообщение
  17.        
  18.         echo "<html><head><meta http-equiv='Refresh' content='5; URL=index.php'></head><body>На Ваш e-mail отправлено письмо с паролем. Вы будете перемещены через 5 сек. Если не хотите ждать, то <a href='index.php'>нажмите сюда.</a></body></html>";//перенаправляем пользователя
  19.         }
  20. ?>

(Отредактировано автором: 05 Октября, 2011 - 02:29:40)

 
 Top
OrmaJever
Отправлено: 04 Октября, 2011 - 21:32:29
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




taxi008 пишет:
$password = md5($rand);

пароль состоит из 32 символов? А?! Проверьте в базу пароль, и тот который вы вводите


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Мелкий Супермодератор
Отправлено: 04 Октября, 2011 - 21:46:29
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)





OrmaJever, а почему нет? У меня на многих сайтах 32-символьный пароль.


По теме - проверяйте, что в базе. И заодно: вы храните пароли открытым текстом, без хэширования?


-----
PostgreSQL DBA
 
 Top
OrmaJever
Отправлено: 04 Октября, 2011 - 22:01:42
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)





Мелкий суровый челябинский пароль? Даже в 20 символов запомнить тяжело если это простой набор букв


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Мелкий Супермодератор
Отправлено: 04 Октября, 2011 - 22:22:43
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)





OrmaJever, а кто сказал, что я их запоминаю? Подмигивание Помню только, как получается. Правда, не всегда помню.
Да и недостаточно суровый, используется-то только 16 символов.


-----
PostgreSQL DBA
 
 Top
taxi008
Отправлено: 04 Октября, 2011 - 22:57:39
Post Id



Гость


Покинул форум
Сообщений всего: 109
Дата рег-ции: Сент. 2011  
Откуда: Москва


Помог: 0 раз(а)




Проверил в базе тот же пароль типа - 238b4b0b29af2417204d4c8b4f74af64 . Но при авторизации все равно пишет ( Мыло или пароль не совпадают.... ).
 
 Top
LIME
Отправлено: 04 Октября, 2011 - 23:24:25
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




taxi008 потому что перед сравнением введенный пароль хэшируется
надо придумать человеческий пароль
прислать его на мыло
а в базу поместить его хэш
 
 Top
taxi008
Отправлено: 04 Октября, 2011 - 23:57:05
Post Id



Гость


Покинул форум
Сообщений всего: 109
Дата рег-ции: Сент. 2011  
Откуда: Москва


Помог: 0 раз(а)




Пытался так и зделать. На http://pajhome.org.uk/crypt/md5/index.html. Но не прокатило.
(Добавление)
А как хэш преобразовать в человеческий?
 
 Top
LIME
Отправлено: 05 Октября, 2011 - 00:01:12
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




taxi008 Не понял нафига?
кэшировать надо так же как при проверке
поищите где в скрипте авторизации кэшируется введенный пароль(возможно не просто md5() )
сделайте также при помещении в базу
(Добавление)
taxi008 пишет:
А как хэш преобразовать в человеческий?
никак ...затем он и нужен
 
 Top
taxi008
Отправлено: 05 Октября, 2011 - 02:11:28
Post Id



Гость


Покинул форум
Сообщений всего: 109
Дата рег-ции: Сент. 2011  
Откуда: Москва


Помог: 0 раз(а)




Нашел хорошую идейку: Сгенерировать новый пароль, отправить его по мылу пользователю. Закешировать и поменять в базе. Все работает но в базе на новый не меняется. В чем проблема не пойму!

PHP:
скопировать код в буфер обмена
  1. $datenow = date('YmdHis');//извлекаем дату
  2.         $new_password = md5($datenow);// шифруем дату
  3.         $new_password = substr($new_password, 2, 6);    //извлекаем из шифра 6 символов начиная со второго. Это и будет наш случайный пароль. Далее запишем его в базу, зашифровав точно так же, как и обычно.
  4.        
  5. $new_password_sh = strrev(md5($new_password))."b3p6f";//зашифровали
  6. mysql_query("UPDATE users SET password='$new_password_sh' WHERE email='$email'",$db);// обновили в базе

(Отредактировано автором: 05 Октября, 2011 - 02:12:25)

 
 Top
LIME
Отправлено: 05 Октября, 2011 - 02:25:18
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




taxi008 пишет:
Нашел хорошую идейку: Сгенерировать новый пароль, отправить его по мылу пользователю. Закешировать и поменять в базе.
Радость ой а я прям чуть выше про это сказал ))
надоже какое совпадение ))
"Закешировать" "Захешировать" - taxi008 найдите 1 отличие и выясните в чем разница
(Добавление)
PHP:
скопировать код в буфер обмена
  1. echo $new_password_sh.'<br>'.$email;//проверка
  2. mysql_query("UPDATE users SET password='$new_password_sh' WHERE email='$email'",$db);
 
 Top
taxi008
Отправлено: 05 Октября, 2011 - 02:32:38
Post Id



Гость


Покинул форум
Сообщений всего: 109
Дата рег-ции: Сент. 2011  
Откуда: Москва


Помог: 0 раз(а)




Спасибо все работает!
 
 Top
LIME
Отправлено: 05 Октября, 2011 - 02:34:50
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




taxi008 пишет:
Спасибо все работает!
рад Улыбка
хотя и удивлен Не понял
 
 Top
vixa
Отправлено: 09 Октября, 2011 - 02:17:07
Post Id



Новичок


Покинул форум
Сообщений всего: 55
Дата рег-ции: Авг. 2011  
Откуда: Украина


Помог: 0 раз(а)




Ты генерируешь МД5 пасс на мыло а надо обычный пароль генерировать так как когда пользователь пытаеться скопировать пароль и ввести в поле логина то это поле шифрует твой Мд5 еще раз в Мд5 и выходит ошибка


-----
Vixa
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB