Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Авторизация
 
 автор: Ozxar   (08.12.2004 в 20:02)   письмо автору
 
 

Как сделать потверждение смены пароля по ссылки

   
 
 автор: cheops   (08.12.2004 в 20:05)   письмо автору
 
   для: Ozxar   (08.12.2004 в 20:02)
 

Имеется ввиду скрипт смены уже существующего пароля на новый?

   
 
 автор: Ozxar   (10.12.2004 в 11:36)   письмо автору
 
   для: cheops   (08.12.2004 в 20:05)
 

Ага

   
 
 автор: cheops   (10.12.2004 в 22:19)   письмо автору
 
   для: Ozxar   (10.12.2004 в 11:36)
 

А уже существующие таблицы где хранятся в базе или файле? Так как в этом случае следует выполнять либо оператор UPDATE, либо заменять пароль в файле.

   
 
 автор: glsv (Дизайнер)   (11.12.2004 в 00:19)   письмо автору
 
   для: Ozxar   (08.12.2004 в 20:02)
 

Или вы про такую ситуацию:
Пользователю посылается письмо со ссылкой ссылка. И если пользователь перейдет на нее, то пароль будет сменен. Про это?

   
 
 автор: Ozxar   (11.12.2004 в 16:15)   письмо автору
 
   для: glsv (Дизайнер)   (11.12.2004 в 00:19)
 

> И если пользователь перейдет на нее, то пароль будет сменен.
Она самая

   
 
 автор: Ozxar   (16.12.2004 в 17:20)   письмо автору
 
   для: Ozxar   (11.12.2004 в 16:15)
 

Может кто нибудь поможет?

   
 
 автор: glsv (Дизайнер)   (16.12.2004 в 21:50)   письмо автору
 
   для: Ozxar   (16.12.2004 в 17:20)
 

Потеряли Ваше сообщение.
Рассмотрим, как это может быть организовано:
1. Пользователь нажимает ссылку сменить пароль.
2. Ему выводится форма, с полями для нового пароля. Он заполняет поля и нажимает ссылку "Сменить".
3. И ответ ему выводится, что на зарегистрированный ящик выслано письмо со ссылкой, по которой необходимо перейти.
4. Приходит письмо со ссылкой. Ссылка ведет к скрипту, который меняет пароль.

Ссылка в письме указывает скрипт, имя пользователя которому меняется пароль и пароль для доступа к скрипту меняющему пароль.
Например:
www.server.ru/change.php?login=vasia&temppass=HGHJKLJFDS


login=vasia - имя пользователя
temppass=HGHJKLJFDS - временный пароль для доступа к скрипту.

Тут есть важное условие. Когда пользователь меняет пароль через форму (пункт 2) специальную таблицу, например, secure заносится
1. имя пользователя (login)
2. Новый пароль, введенный в форму
3. Временные пароль для доступа к скрипту смены пароля (temppass). Временный пароль генерируется.
4. Дата и время, когда пользователь заполнил форму смены пароля (dataChange).

И вот когда посетитель нажал на ссылку в письме - проходят проверки.
Допустим ссылка на смену пароля может жить только 2 дня. Тогда проверяем.

1. Разница по времени между времением обращения к скрипту смены пароля и заполнением формы пароля (dataChange) должна быть не более 2 дней.
2. Временный пароль temppass должен соответствовать имени пользователя (login).
Т.е. обращаемся к этой специальной таблице (secure), запрашиваем запись для login = имени пользователя и проверяем находящиеся там значения со значениями которые переданы по ссылке.
Если все проверки прошли, то выполняется запрос на смену пароля.

   
 
 автор: cheops   (16.12.2004 в 21:56)   письмо автору
 
   для: Ozxar   (16.12.2004 в 17:20)
 

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

   
 
 автор: Ozxar   (18.12.2004 в 01:51)   письмо автору
 
   для: cheops   (16.12.2004 в 21:56)
 

Авторизация проходит по этому примеру

http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=80

   
 
 автор: cheops   (18.12.2004 в 13:19)   письмо автору
 
   для: Ozxar   (18.12.2004 в 01:51)
 

Тогда форум для смены пароля следует изменить, добавив новое поле для пароля
<form action=handler.php method=post> 
Имя посетителя : <input type=text name=name><br> 
Пароль : <input type=password name=password><br> 
Новый пароль : <input type=password name=new_password><br> 
<input type=submit value=Отправить> 
</form>

а вместо входа посетителя
<?php
         
if(session_start()) 
         { 
           
$_SESSION['user'] = $_POST['name']; 
           
$_SESSION['password'] = $_POST['password']; 
           
// Осуществляем автоматический переход на 
           // страницу index.php чтобы убедится, что 
           // посетитель "вошёл" 
           
echo "<HTML><HEAD> 
                 <META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php'> 
                 </HEAD><body>"

         } 
?>

Реализовать смену пароля
<?php
         
if(session_start()) 
         { 
           
// Осуществляем смену пароля
           
$query "UPDATE users SET password = '".$_POST['new_password']."'
                             WHERE name = '"
.$_POST['name']."'";
           if(
mysql_query($query))
           {
             
$_SESSION['user'] = $_POST['name']; 
             
$_SESSION['password'] = $_POST['new_password']; 
             
// Осуществляем автоматический переход на 
             // страницу index.php чтобы убедится, что 
             // посетитель "вошёл" 
             
echo "<HTML><HEAD> 
                 <META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php'> 
                 </HEAD><body>"

           } else exit(
mysql_error());
         } 
?>


PS Хорошим тоном является дополнительное текстовое поле в HTML-форме для подтверждения пароля. Данные из этих двух форм следует сравнить, чтобы посетитель не ошибся при наборе.

   
 
 автор: Ozxar   (18.12.2004 в 16:11)   письмо автору
 
   для: cheops   (18.12.2004 в 13:19)
 

Большое спасибо

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования