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
Форумы портала PHP.SU :: Версия для печати :: Смена пароля
Форумы портала PHP.SU » PHP » Напишите за меня, пожалуйста » Смена пароля

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

1. taxi008 - 05 Октября, 2011 - 23:43:18 - перейти к сообщению
Такая проблема: Есть скрипт востановления пароля PHP, MySQL, по запросу пароль востонавливается и высылается на мыло. Но ведь не для кого не секрет, что сгенерированный пароль трудно запомнить. Пользователь конечно решит пароль сменить на свой. Пишу скрипт за скриптом - не работает. А в инете ничего почитать по этому поводу не могу найти. Может кто где, что видел, подскажите!
2. OrmaJever - 05 Октября, 2011 - 23:50:30 - перейти к сообщению
да там выдумывать то особо нечего.
Пользователь вводит старый и новый пароли, вначале проверяется старый на совпадение в бд, если совпал то обновляем пароль для этого логина. В чём проблема то? Покажите код, поможем
3. Zuldek - 06 Октября, 2011 - 07:57:06 - перейти к сообщению
Зачем генерировать сразу пароль. генерируйте ссылку, перейдя по которой можно однократно пароль изменить. Вот и все.
4. taxi008 - 06 Октября, 2011 - 08:55:59 - перейти к сообщению
А можно по подробнее.
5. Zuldek - 06 Октября, 2011 - 09:48:01 - перейти к сообщению
taxi008 пишет:
А можно по подробнее.

При восстановлении пароля генерируешь ссылку чтото вроде
CODE (htmlphp):
скопировать код в буфер обмена
  1. http://site.ru/remind.php?user=adgvtgtrghtrTtrbtrbg56&id=Gdfdfgsdfsdf8453feofgo3453gf04305widf0we345etrwf3ff2trf4werg4f34f


сгенерировал, записал в id в хеше в таблицу юзеров. Выслал ссылку на почту юзера. При переходе по ссылке с почты, сверяешь id с ссылки с id в базе, если совпадает то даешь изменить пароль и удаляешь id ссылки восстановления с бд.
Если не совпадает, удаляешь ссылку с таблицы через сутки кроном. все.
6. taxi008 - 06 Октября, 2011 - 16:21:59 - перейти к сообщению
А можно где то наглядно посмотреть пример. Что то не совсем догоняю!
7. snikers987 - 06 Октября, 2011 - 23:32:41 - перейти к сообщению
В общем делай так:

Создай таблицу:
CODE (SQL):
скопировать код в буфер обмена
  1. CREATE TABLE `b`.`lost_pass` (
  2. `code` VARCHAR( 200 ) NOT NULL ,
  3. `email` VARCHAR( 50 ) NOT NULL  
  4. ) ENGINE = MYISAM ;


пишешь скрипт, там поля email и кнопка,
юзер пишет своё мыло и нажимает востановить, ты проверяешь в базе существование пользователя с таким мылом, есть - оправляешь письмо со ссылкой http://site.ru/activate.php?code=blablabla

blablabla = md5($_POST['email']);

и пишеш эту вкуснятину в базу:
PHP:
скопировать код в буфер обмена
  1. $user_code = md5($_POST['email']);
  2. $email = $_POST['email'];
  3. mysql_query("INSERT INTO lost_pass (code, email) VALUES('$user_code', '".$email."')");


потом пишешь фаил activate.php:

PHP:
скопировать код в буфер обмена
  1.  
  2. //конект к базе
  3. $res = mysql_query("SELECT * FROM lost_pass WHERE code='".$_GET['code']."'");
  4. $row = mysql_fetch_array($res);
  5. if(mysql_num_rows($res)>0)
  6.         {
  7.         //выводи поля новый пароль и повтор нового пароля
  8.         echo "<form method='POST'><input type='text' name='new_pass' />";
  9.         echo "<input type='text' name='new_pass2' />";
  10.         echo "<input type='hidden' name='code' value='".$_GET['code']."' />";
  11.         echo "<input type='submit' name='change' value ='сменить'/></form>";
  12.         if(isset($_POST['change'] && mysql_num_rows($res)>0){
  13.                 mysql_query("UPDATE users SET password = '"md5($_POST['new_pass'])."' WHERE email='".$row['email']."'");
  14.                 mysql_query("DELETE FROM lost_pass WHERE user_code='".$_POST['code']."'");
  15.                 echo "Пароль сменен.";
  16.         }
  17.  
  18.  
  19. }
  20.  


писал с головы особо не думая, вот тебе инфа, переваривай ее
8. Ammiak - 08 Октября, 2011 - 12:04:44 - перейти к сообщению
snikers987, я также как и автор темы искал оптимальное решение по восстановлению паролей... Большое спс, всё подробно описал. Не понял один момент: почему без скрытого инпута не пашет? Вот так:
PHP:
скопировать код в буфер обмена
  1.  
  2. mysql_query("DELETE FROM lost_pass WHERE user_code='".$_GET['code']."'");
  3.  
9. snikers987 - 08 Октября, 2011 - 14:46:24 - перейти к сообщению
а потомучто после нажатия сменить переменная $_GET['code'] уже не передается, ее нужно передать постом
10. vixa - 09 Октября, 2011 - 02:05:32 - перейти к сообщению
Ну и что тебя затрудняет в этом скрипте?
У меня есть скрипт мной написаный он делает генерацию пароля и высылает скенерированный пароль не в МД5 формате на мыло
После чего пользователь залогинился и может изменить пароль на свой
Что не получаеться обращайся помогу ICQ: 443-19-17-42
11. Sonyque - 17 Ноября, 2011 - 12:19:33 - перейти к сообщению
snikers987 Спасибо большое Вам, недавно столкнулся с данной задачей, помог Ваш пост!
12. DiMmeTRiuS - 11 Апреля, 2013 - 21:08:31 - перейти к сообщению
snikers987 Здравствуйте! у меня немного не получается( вот что вылезает:

Parse error: syntax error, unexpected T_BOOLEAN_AND, expecting ',' or ')' in /home/я скрыл/public_html/template2/acti vate.php on line 16, вот эта линия:

if(isset($_POST['change'] && mysql_num_rows($res)>0){

я думаю что проблема в том, что нет 1 закрывающей круглой скобки. Если мои догадки верны, то я ставлю ее вот сюда:

if(isset($_POST['change']) && mysql_num_rows($res)>0){

после этого уже вылазит вот это:

Parse error: syntax error, unexpected T_STRING in /home/я скрыл/public_html/template2/acti vate.php on line 17

вот эта 17 строка:

mysql_query("UPDATE users SET password = '"md5($_POST['new_pass'])."' WHERE email='".$row['email']."'");

В чем моя ошибка? БД была создана как надо, без проблем.

Только я неуловил один момент, а именно куда именно этот код вставлять:

$user_code = md5($_POST['email']);
$email = $_POST['email'];
mysql_query("INSERT INTO lost_pass (code, email) VALUES('$user_code', '".$email."')");

За ранее спасибо!

 

Powered by ExBB FM 1.0 RC1