|
|
|
| Как сделать потверждение смены пароля по ссылки | |
|
|
|
|
|
|
|
для: Ozxar
(08.12.2004 в 20:02)
| | Имеется ввиду скрипт смены уже существующего пароля на новый? | |
|
|
|
|
|
|
|
для: cheops
(08.12.2004 в 20:05)
| | Ага | |
|
|
|
|
|
|
|
для: Ozxar
(10.12.2004 в 11:36)
| | А уже существующие таблицы где хранятся в базе или файле? Так как в этом случае следует выполнять либо оператор UPDATE, либо заменять пароль в файле. | |
|
|
|
|
|
|
|
для: Ozxar
(08.12.2004 в 20:02)
| | Или вы про такую ситуацию:
Пользователю посылается письмо со ссылкой ссылка. И если пользователь перейдет на нее, то пароль будет сменен. Про это? | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(11.12.2004 в 00:19)
| | > И если пользователь перейдет на нее, то пароль будет сменен.
Она самая | |
|
|
|
|
|
|
|
для: Ozxar
(11.12.2004 в 16:15)
| | Может кто нибудь поможет? | |
|
|
|
|
|
|
|
для: 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 = имени пользователя и проверяем находящиеся там значения со значениями которые переданы по ссылке.
Если все проверки прошли, то выполняется запрос на смену пароля. | |
|
|
|
|
|
|
|
для: Ozxar
(16.12.2004 в 17:20)
| | Обязательно, но для этого нужно знать где хранится старый пароль, иначе как же его заменить на новый? | |
|
|
|
|
|
|
|
|
для: 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-форме для подтверждения пароля. Данные из этих двух форм следует сравнить, чтобы посетитель не ошибся при наборе. | |
|
|
|
|
|
|
|
для: cheops
(18.12.2004 в 13:19)
| | Большое спасибо | |
|
|
|