CoolCMS-ке вроде бы легкая я когда-то оттуда воровал)
А тока там сразу новый пасс отправляет через
mail(); (+/-)
<?php
// by Mike O. (mides), coolcms.org
$title = 'Восстановление пароля';
require_once '../includes/sys.php';
require_once '../includes/header.php';
if ($u['id']) header('location: ../');
switch ($act) {
default:
tp('Восстановления пароля');
echo '<div class="body">';
echo '<form name="form" action="?act=do" method="post" name="form">
Ваш логин:<br /><input name="username" type="text" maxlength="12" size="12" /><br />
Ваш E-mail:<br /><input name="email" type="text" maxlength="50" size="12" /><br />
Провер. код:<br />
<img src="../images/code.php" alt="" /><br />
<input name="code" maxlength="5" size="12" /><br />
<input name="submit" type="submit" value="Продолжить" /></form>';
nav('login.php');
break;
case 'do':
if (empty($_POST['username']) or empty($_POST['email']) or empty($_POST['code'])) {
error('Вы не заполнили поля.');
nav('?');
break;
}
$code = intval($_POST['code']);
if ($_SESSION['code'] != $code or empty($code)) {
error('Вы ввели неверный проверочный код.');
nav('?');
break;
}
$username = check($_POST['username']);
$email = check($_POST['email']);
$new_pass = generate(8);
$isset_u = mysql_result(mysql_query("SELECT COUNT(`id`) FROM `users` WHERE `username` = '$username' and `email` = '$email'"), 0);
if ($isset_u == 0) {
error('Введенные данные неверны.');
nav('?');
break;
}
mysql_query("UPDATE `users` SET `password` = '".md5(md5($new_pass))."' WHERE `username` = '$username'");
// sending e-mail
$email_a = 'robot@'.HOME;
$message = 'Уважаемый пользователь!
Вы запросили смену пароля на сайте '.$config['copy'].'.
Ваш новый пароль: '.$new_pass.'
Автологин: http://'.HOME.'/a.php?l='.$username.'&p='.$new_pass.'
---
С уважением, администрация '.$config['copy'];
mail($email, '=?utf-8?B?'.base64_encode('Смена пароля на '.HOME).'?=', $message, "From: $email_a\r\nContent-type: text/plain; charset=utf-8;\r\nX-Mailer: PHP;");
info('Новый пароль был сгенерирован и выслан на Ваш e-mail.');
nav('login.php');
session_destroy();
break;
}
require_once '../includes/tail.php';
?>
Kip-OK, примерная логика
все сокращено до нельзя
# Koenig (04.01.2017 / 13:36)
Kip-OK, примерная логика
все сокращено до нельзя
я так понял, что там вводишь мыло, пароль сам генерируется и отсылается на мыло так?
Kip-OK, ну да, там минимум кода, должно быть понятно, новый пароль генерится, перезаписывает текущий и отправляет в письмо, так будет правильно, без заморочек там, типо временных ограничений и тд и тп
Koenig, Но если кто то узнает логин / мыло то сможет замучать человека новыми паролями
# fanatos (04.01.2017 / 16:01)
В тему про сергхей
ах ах-ах помощьник еще тот