|
|
|
| Скрипт напоминания пароля, описывает два шага смены личных данных: 1. отправка на майл ссылки для смены пароля 2. смена пароля и запись в базу. Проблема в очень долгой генерации страниц (до 40 сек.). Очень нужна ваша помощь. Код ниже | |
|
|
|
|
|
|
|
для: ROC8
(05.05.2009 в 22:40)
| |
<?php
session_start();
include('../er/ds.php');
//уникальный хэш
function GenerateSalt($n)
{
$key='';
$pattern='13579abcdefghijklmnopqrstuvwxyz';
$counter=strlen($pattern)-1;
for($i=0;$i<$n;$i++)
{
$key.=$pattern{rand(0,$counter)};
}
return $key;
}
$time=time();
$hds="MIME-Version: 1.0\nFrom: fealure.com>\nContent-Type: text/plain; charset=utf-8\nX-Mailer: PHP/".phpversion();
if(isset($_GET['eKey']))
{
$eKey=$_GET['eKey'];
if(!ctype_alnum($eKey))
{
header('Location: ../ln.php?rm');
exit;
}
else
{
$newmq=mysql_query("SELECT `mail`,`login` FROM `casi` WHERE `eck`='{$eKey}' AND `tmst`+3600>$time LIMIT 1") or die(mysql_error());
if(mysql_num_rows($newmq)==1)
{
//получаем мыло и логин
$row=mysql_fetch_assoc($newmq);
$eml=$row['mail'];
$lgn=$row['login'];
//генерируем новый пароль
$newpwd=generatesalt(10);
//отправляем на e-mail
$tema='New Password fealure.com';
$text="Пароль изменен.\nНовые данные:\nЛогин: {$lgn}\nПароль: {$newpwd}\n\nhttp://fealure.com >>\n\nP.S. Сохраните это письмо в надежном месте.\nfealure.com";
//обновляем базу
$salt=generatesalt(3);
$hashed_password=md5(md5($newpwd).$salt);
mysql_query("UPDATE `casi` SET `password`='{$hashed_password}', `salt`='{$salt}' WHERE `mail`='{$eml}'");
include('../er/toppg.php');
echo '<div class="main">Шаг 2. Письмо с ключами доступа отправлено на ваш e-mail<br><a href="../ln.php">[ OK ]</a></div>';
mail($eml,$tema,$text,$hds);
}
else
{
header('Location: ../ln.php?rm');
exit;
}
}
}
else
{
$eml=mysql_real_escape_string($_POST['eml']);
//проверяем существование аккаунта
$smq=mysql_query("SELECT `id` FROM `casi` WHERE `mail`='{$eml}' LIMIT 1") or die(mysql_error());
if(mysql_num_rows($smq)!=1)
{
include('../er/toppg.php');
echo 'Ошибка! Указанный E-mail в базе не зарегистрирован.<br><a href="../ln.php?rm">[ OK ]</a>';
}
else
{
//генерируем уникальный ключ
$eK=md5((microtime().rand(0,999)));
//записываем в очередь на смену
mysql_query("UPDATE `casi` SET `eck`='{$eK}', `tmst`='{$time}' WHERE `mail`='{$eml}'");
//отправляем на e-mail
$tema='Password fealure.com';
$text="Для смены пароля перейдите по ссылке\nhttp://go-edit.ru/nepr/rm/?eKey={$eK}\n\nСсылка активна втечение часа\n\fealure.com";
include('../er/toppg.php');
echo '<div class="main">Шаг 1. Письмо с дальнейшими инструкциями отправлено на указанный вами e-mail<br><a href="../ln.php">[ OK ]</a></div>';
mail($eml,$tema,$text,$hds);
}
}
include('../speed/botpg.php');
?>
|
| |
|
|
|
|
|
|
|
для: ROC8
(05.05.2009 в 22:46)
| | начать можно с расставления отступов. :-\ | |
|
|
|
|
|
|
|
для: Trianon
(05.05.2009 в 23:03)
| | Отступы влияют на работу скрипта? | |
|
|
|
|
|
|
|
для: ROC8
(05.05.2009 в 23:09)
| | нет, конечно.
Отступы влияют на то, будут его читать люди или не будут.
Впрочем, если Вы ориентируетесь на некий автоматический оптимизатор, со спокойной душой можете мой совет проигнорировать. | |
|
|
|