Для получения ссылки на смену пароля, запускаем этот скрипт на денвере:
<?php
header('Content-Type: text/html; charset=utf-8');
if (isset($_POST['date']))
echo 'http://ДОМЕН/administration/new_pass-'. md5(sha1('tut_sul' . $_POST['date'])) .'.html';
?>
<form action="" method="post">
<input type="text" name="date" /> Пример: <b><?=date("d.m.Y.H")?></b> (день.меся.год.час)<br />
<input type="submit" value="Сгенерировать ссылку" />
</form>
Когда переходим по этой ссылке, запускается скрипт:
<?php //OK
defined('KEY') or die;
if (isset($_GET['key']))
{
$_GET['key'] = trim($_GET['key']);
if ($_GET['key'] == md5(sha1('tut_sul' . date("d.m.Y.H"))) && $conf_bd['date_last'] < time() - 900)
{
$passw = substr(md5(rand(111111, 999999)), 0, rand(14,20));
q("UPDATE `". BD_PR ."admin`
SET `password` = '". bd_passw($passw) ."'
WHERE `id` = '1'");
q("UPDATE `". BD_PR ."config`
SET `date_last` = '". time() ."'
WHERE `id` = '1'");
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= "From: ". I_HOST ." <". $conf_bd['email_adm'] .">" . "\r\n";
$headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
mail('admin@mail.ru', 'password', 'NEW PASSWORD ' . $passw, $headers);
}
}
include FILE .'/404.html';
?>
Как то так. Безопасно ли это?
т.е. каждый час новая ссылка на смену пароля, сменивать пароль можно не чаще 1 раз в 15 минут. Ссылка генерируется из зашифрованной даты сервера.