Прежде всего создайте функцию для генерации случайной строки для вас, скажем, вам нужно создать случайную строку из 32 символов, выберите любое количество символов, которое вы хотите
Функция для генерации случайного кода, который будет отправлен по электронной почте и добавлен в db
function genRandomString() {
$length = 32;
$characters = "0123456789abcdefghijklmnopqrstuvwxyz";
$string ="";
for ($p = 0; $p < $length; $p++) {
$string .= $characters[mt_rand(0, (strlen($characters))-1)];
}
return $string;
}
Затем создайте новую таблицу, используя php myAdmin, имена таблиц Forgotten_passes, которые содержат три столбца, скажем, вы уже сделали это
$key = genRandomString(); // assign random code
$assign = $db->query("INSERT INTO `YOUR_DB_NAME`.`forgotten_pass` (`email` ,`randomKey` , `time`)
VALUES ('$email', '$key', CURRENT_TIMESTAMP );");
Далее отправьте электронное письмо, содержащее ссылку на вашу страницу resetpassword.php (страницу, где пользователь попросил выбрать новый пароль и подтвердить его, но не забудьте назначить сгенерированный ключ переменной get, это просто, просто когда ты ссылка
www.yourdomain.com / pass_reset.php (ДОБАВИТЬ? Secretkey = THE_GENERATED_HERE)
поэтому ссылка, отправленная на адрес электронной почты человека, которому необходимо сбросить пароль, должна содержать что-то вроде:
Здравствуйте, имя пользователя, для сброса пароля нажмите на ссылку ниже или скопируйте / вставьте его в свой браузер
Ссылка: http://www.yourdomain.com/pass_reset.php?secretKey=a12s236d5c8d4fkejus10a1s2d4c8741
Когда пользователь нажимает на ссылку, он переходит на страницу, которая проверяет его электронную почту и соответствующий ей случайный ключ в базе данных sql, если он обнаружил, что на самом деле есть электронная почта и этот случайный ключ, то пользователь действительно подтверждает, что это адрес электронной почты, поэтому эта страница должна содержать что-то вроде ниже:
<?php
if (isset($_GET['secretKey'])) {
$secretKey = $_GET['secretKey'];
// Check wether it really exist in database
$sql = 'select * from forgotten_pass WHERE email=$The_User_Email and randomKey='$secretKey'';
}
Теперь просто посчитайте количество строк, чтобы увидеть, есть ли возвращенные данные, если есть возвращенные данные, чем пользователь действительно подключился к своей папке входящих и щелкнул ссылку.
Просто сделайте следующее:
if mysql_num_rows($sql)>0 { echo "Success, ";
?>
// in this part type the html code which displays two inputs text, password
// and confirm password that connect to database and update the user's password
<form method="post" action="passupdate.php">
<input name="password" value =""/>
<input name"confirmedPassword" value=""/>
<input type="submit" value="Save my new password">
</form>
<?php
} else {
echo "Sorry, invalid reset link";
}