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]   

> Описание: Помогите со скриптом PHP, MySQL.
taxi008
Отправлено: 05 Октября, 2011 - 23:43:18
Post Id



Гость


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


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




Такая проблема: Есть скрипт востановления пароля PHP, MySQL, по запросу пароль востонавливается и высылается на мыло. Но ведь не для кого не секрет, что сгенерированный пароль трудно запомнить. Пользователь конечно решит пароль сменить на свой. Пишу скрипт за скриптом - не работает. А в инете ничего почитать по этому поводу не могу найти. Может кто где, что видел, подскажите!

(Отредактировано автором: 05 Октября, 2011 - 23:44:04)

 
 Top
OrmaJever
Отправлено: 05 Октября, 2011 - 23:50:30
Post Id



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


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


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




да там выдумывать то особо нечего.
Пользователь вводит старый и новый пароли, вначале проверяется старый на совпадение в бд, если совпал то обновляем пароль для этого логина. В чём проблема то? Покажите код, поможем


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Zuldek
Отправлено: 06 Октября, 2011 - 07:57:06
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


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




Зачем генерировать сразу пароль. генерируйте ссылку, перейдя по которой можно однократно пароль изменить. Вот и все.
 
 Top
taxi008
Отправлено: 06 Октября, 2011 - 08:55:59
Post Id



Гость


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


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




А можно по подробнее.
 
 Top
Zuldek
Отправлено: 06 Октября, 2011 - 09:48:01
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


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




taxi008 пишет:
А можно по подробнее.

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


сгенерировал, записал в id в хеше в таблицу юзеров. Выслал ссылку на почту юзера. При переходе по ссылке с почты, сверяешь id с ссылки с id в базе, если совпадает то даешь изменить пароль и удаляешь id ссылки восстановления с бд.
Если не совпадает, удаляешь ссылку с таблицы через сутки кроном. все.

(Отредактировано автором: 06 Октября, 2011 - 09:51:11)

 
 Top
taxi008
Отправлено: 06 Октября, 2011 - 16:21:59
Post Id



Гость


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


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




А можно где то наглядно посмотреть пример. Что то не совсем догоняю!
 
 Top
snikers987
Отправлено: 06 Октября, 2011 - 23:32:41
Post Id



Участник


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


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




В общем делай так:

Создай таблицу:
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.  


писал с головы особо не думая, вот тебе инфа, переваривай ее

(Отредактировано автором: 06 Октября, 2011 - 23:33:41)



-----
Когда всматриваешься в тёмную бездну, учти, что кто-то может смотреть на тебя из неё...
 
My status
 Top
Ammiak
Отправлено: 08 Октября, 2011 - 12:04:44
Post Id


Частый гость


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


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




snikers987, я также как и автор темы искал оптимальное решение по восстановлению паролей... Большое спс, всё подробно описал. Не понял один момент: почему без скрытого инпута не пашет? Вот так:
PHP:
скопировать код в буфер обмена
  1.  
  2. mysql_query("DELETE FROM lost_pass WHERE user_code='".$_GET['code']."'");
  3.  
 
 Top
snikers987
Отправлено: 08 Октября, 2011 - 14:46:24
Post Id



Участник


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


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




а потомучто после нажатия сменить переменная $_GET['code'] уже не передается, ее нужно передать постом


-----
Когда всматриваешься в тёмную бездну, учти, что кто-то может смотреть на тебя из неё...
 
My status
 Top
vixa
Отправлено: 09 Октября, 2011 - 02:05:32
Post Id



Новичок


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


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




Ну и что тебя затрудняет в этом скрипте?
У меня есть скрипт мной написаный он делает генерацию пароля и высылает скенерированный пароль не в МД5 формате на мыло
После чего пользователь залогинился и может изменить пароль на свой
Что не получаеться обращайся помогу ICQ: 443-19-17-42


-----
Vixa
 
 Top
Sonyque
Отправлено: 17 Ноября, 2011 - 12:19:33
Post Id


Новичок


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


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




snikers987 Спасибо большое Вам, недавно столкнулся с данной задачей, помог Ваш пост!
 
 Top
DiMmeTRiuS
Отправлено: 11 Апреля, 2013 - 21:08:31
Post Id


Новичок


Покинул форум
Сообщений всего: 1
Дата рег-ции: Апр. 2013  


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




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."')");

За ранее спасибо!
 
 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