Файл: modules/recovery/ajax.php
Строк: 65
<?
if($CONFIG['uid']!=0) die('Access denied.');
switch($this->Act){
case 'send':
$login = $_POST['email'];
$tmstmp = Core::MysqlSelect('users','`last_recovery`',array('email'=>$login));
if(filter_var($login, FILTER_VALIDATE_EMAIL) && is_array($tmstmp) && (strtotime('-1 day', time())>strtotime($tmstmp[0]['last_recovery']) || strtotime($tmstmp[0]['last_recovery'])=='0')){
$chars = 'abdefhiknrstyzABDEFGHKNQRSTYZ23456789';
$numChars = strlen($chars);
$string = '';
for ($i = 0; $i < 8; $i++) {
$string .= substr($chars, rand(1, $numChars) - 1, 1);
}
$q = mysql_query("UPDATE `users` SET `code_recovery`='$string' WHERE email = '$login';");
$subject = 'Сброс пароля';
$key = Confirm::GenKey($login,$string.'recovery');
$message = '
<html>
<head>
<title>Enterlike.com</title>
</head>
<body>
<p>Здравствуйте. Вам нужно подтвердить сброс пароля на Enterlike.com <br />
<a href="http://enterlike.com/ajax/recovery/confirm?email={login}&key={key}&code={code}">Сбросить</a></p>
<p><br />Если кнопка "Сбросить" не работает, скопируйте следующую ссылку и откройте в своём браузере: http://enterlike.com/ajax/recovery/confirm?email={login}&key={key}&code={code}</p>
</body>
</html>
';
$message = str_replace('{key}',$key,$message);
$message = str_replace('{login}',$login,$message);
$message = str_replace('{code}',$string,$message);
$m= new Mail("utf-8"); // начинаем
$m->From( "info@enterlike.com" ); // от кого отправляется почта
$m->To( $login ); // кому адресованно
$m->Subject( $subject );
$m->Body( $message , "html" );
$m->smtp_on( "smtp.yandex.ru", "info@enterlike.com", "f9qxka52" ) ; // если указана эта команда, отправка пойдет через SMTP
$m->Send(); // а теперь пошла отправка
echo 'ok';
//print_r($tmstmp);
} else {
echo 'err';
}
break;
case 'confirm':
$login = $_GET['email'];
if(filter_var($login, FILTER_VALIDATE_EMAIL)){
$key = Confirm::GenKey($login,$_GET['code'].'recovery');
$code = Core::MysqlSelect('users','`code_recovery`',array('email'=>$login));
if($key==$_GET['key'] && $code[0]['code_recovery']==$_GET['code']){
$chars = 'abdefhiknrstyzABDEFGHKNQRSTYZ23456789';
$numChars = strlen($chars);
$password = '';
for ($i = 0; $i < 8; $i++) {
$password .= substr($chars, rand(1, $numChars) - 1, 1);
}
$md5pass = md5(md5($password));
$q = mysql_query("UPDATE `users` SET `password`='$md5pass' WHERE email = '$login';");
$subject = 'Новый пароль';
$message = '
<html>
<head>
<title>Enterlike.com</title>
</head>
<body>
<p>Здравствуйте. Вы сбросили пароль на Enterlike.com<br />
<p>Новый пароль: {password}</p>
</body>
</html>
';
$message = str_replace('{password}',$password,$message);
$m= new Mail("utf-8"); // начинаем
$m->From( "info@enterlike.com" ); // от кого отправляется почта
$m->To( $login ); // кому адресованно
$m->Subject( $subject );
$m->Body( $message , "html" );
$m->smtp_on( "smtp.yandex.ru", "info@enterlike.com", "f9qxka52" ) ; // если указана эта команда, отправка пойдет через SMTP
$m->Send(); // а теперь пошла отправка
echo 'Новый пароль отправлен вам на email';
$q = mysql_query("UPDATE `users` SET `code_recovery`='0' WHERE email = '$login';");
} else {
echo 'Ошибка! Пароль не может быть отправлен.';
}
}
break;
}