Автор Тема: Восстановление пароля  (Прочитано 543 раз)

0 Пользователей и 1 Гость просматривают эту тему.

GameRussiaАвтор темы

  • *
  • Оффлайн
  • Награды На форуме более 1 года Более 100 сообщений Более 10 созданных тем
  • Дата регистрации: Июн 2017
  • Сообщений: 112
  • Страна: ru
  • Поблагодарили: 6 раз(а)
  • Репутация +1/-0
  • Пол: Мужской
    • Награды
Восстановление пароля
« : 20 Июнь 2017, 11:31:10 »
Нет оценки
Не работает восстановление. Письмо с паролем не приходит. В базу запись заноситься. Обязательно ли нужно иметь почтовый акк на хостинге?
Открыть / Закрыть
Файл isender
<?php
class isender{
   
   var $Hosts = "";
   
   /*======================================================================*\
   Function:   __construct
   Descriiption: Конструктор класса
   \*======================================================================*/
   function __construct(){
   
      $this->Hosts = str_replace("www.","",$_SERVER['HTTP_HOST']);
   
   }
   
   /*======================================================================*\
   Function:   SendRegKey
   Descriiption: Отправляет регистрационный ключ
   \*======================================================================*/
   function SendRegKey($mail, $key){
   
      $text = "На ваш Email была запрошена ссылка для регистрации в системе \"".$this->Hosts."\"<BR />";
      $text.= "Если вы не запрашивали ссылку, просто проигнорируйте это сообщение. <BR /><BR />";
      $text.= "Ссылка для регистрации: <a href='http://".$this->Hosts."/signup/key/{$key}'>";
      $text.= "http://".$this->Hosts."/signup/key/{$key}</a>";
      $subject = "Регистрация в системе \"".$this->Hosts."\"";
      
      return $this->SendMail($mail, $subject, $text);
      
   }
   
   /*======================================================================*\
   Function:   RecoveryPassword
   Descriiption: Восстановление пароля
   \*======================================================================*/
   function RecoveryPassword($user, $pass, $mail){
   
      $text.= "Данные для входа в личный кабинет пользователя: <BR />";
      $text.= "<b>Логин:</b> {$user}<BR />";
      $text.= "<b>Пароль:</b> {$pass}<BR />";
      $text.= "Ссылка для входа в кабинет: <a href='http://".$this->Hosts."/signin'>http://".$this->Hosts."/signin</a>";
      $subject = "Восстановление забытого пароля в системе \"".$this->Hosts."\"";
      
      return $this->SendMail($mail, $subject, $text);
      
   }
   
   /*======================================================================*\
   Function:   SendAfterReg
   Descriiption: Отправляет данные после регистрации
   \*======================================================================*/
   function SendAfterReg($user, $mail, $pass){
   
      $text = "Благодарим вас за регистрацию в системе в системе \"".$this->Hosts."\"<BR />";
      $text.= "Ваши данные для входа в личный кабинет пользователя: <BR />";
      $text.= "<b>Логин:</b> {$user}<BR />";
      $text.= "<b>Пароль:</b> {$pass}<BR />";
      $text.= "Ссылка для входа в кабинет: <a href='http://".$this->Hosts."/signin'>http://".$this->Hosts."/signin</a>";
      $subject = "Завершение регистрации в системе \"".$this->Hosts."\"";
      
      return $this->SendMail($mail, $subject, $text);
      
   }
   
   /*======================================================================*\
   Function:   SetNewPassword
   Descriiption: Отправляет данные после смены пароля
   \*======================================================================*/
   function SetNewPassword($user, $pass, $mail){
   
      $text = "В настройках вашего аккаунта был изменен пароль<BR />";
      $text.= "Ваши новые данные для входа в личный кабинет пользователя: <BR />";
      $text.= "<b>Логин:</b> {$user}<BR />";
      $text.= "<b>Новый пароль:</b> {$pass}<BR />";
      $text.= "Ссылка для входа в кабинет: <a href='http://".$this->Hosts."/signin'>http://".$this->Hosts."/signin</a>";
      $subject = "Смена пароля в системе \"".$this->Hosts."\"";
      
      return $this->SendMail($mail, $subject, $text);
      
   }
   
   
   /*======================================================================*\
   Function:   Headers
   Descriiption: Создание заголовков письма
   \*======================================================================*/
   function Headers(){
   
   $headers = "MIME-Version: 1.0\r\n";
   $headers.= "Content-type: text/html; charset=Windows-1251\r\n";
   $headers.= "Date: ".date("m.d.Y (H:i:s)",time())."\r\n";
   $headers.= "From: support@".$this->Hosts." \r\n";
   
      return $headers;
   
   }
   
   /*======================================================================*\
   Function:   SendMail
   Descriiption: Отправитель
   \*======================================================================*/
   function SendMail($recipient, $subject, $message){
   
      $message .= "<BR />----------------------------------------------------
      <BR />Сообщение было выслано роботом, пожалуйста, не отвечайте на него!";
      return (mail($recipient, $subject, $message, $this->Headers())) ? true : false;
   
   }
   
   
   
}
?>
[свернуть]
Открыть / Закрыть
Файл recovery
$_OPTIMIZATION["title"] = "Восстановление пароля";
$_OPTIMIZATION["description"] = "Восстановление забытого пароля";
$_OPTIMIZATION["keywords"] = "Восстановление забытого пароля";

if(isset($_SESSION["user_id"])){ Header("Location: /account"); return; }

?>
<div class="s-bk-lf">
   <div class="acc-title">Восстановление пароля</div>
</div>
<div class="silver-bk"><div class="clr"></div>   
<?PHP

   if(isset($_POST["email"])){

      if(isset($_SESSION["captcha"]) AND strtolower($_SESSION["captcha"]) == strtolower($_POST["captcha"])){
      
      unset($_SESSION["captcha"]);
      
      $email = $func->IsMail($_POST["email"]);
      $time = time();
      $tdel = $time + 60*15;
      
         if($email !== false){
            
            $db->Query("DELETE FROM db_recovery WHERE date_del < '$time'");
            $db->Query("SELECT COUNT(*) FROM db_recovery WHERE ip = INET_ATON('".$func->UserIP."') OR email = '$email'");
            if($db->FetchRow() == 0){
            
               $db->Query("SELECT id, user, email, pass FROM db_users_a WHERE email = '$email'");
               if($db->NumRows() == 1){
               $db_q = $db->FetchArray();
               
               # Вносим запись в БД
               $db->Query("INSERT INTO db_recovery (email, ip, date_add, date_del) VALUES ('$email',INET_ATON('".$func->UserIP."'),'$time','$tdel')");
               
               # Отправляем пароль
               $sender = new isender;
               $sender -> RecoveryPassword($db_q["email"], $db_q["pass"], $db_q["email"]);
               
               echo "<center><font color = 'green'><b>Данные для входа отправлены на Email</b></font></center>";
               ?>
               </div>
               <div class="clr"></div>   
               <?PHP
               return;
               
               }else echo "<center><font color = 'red'><b>Пользователь с таким Email не зарегистрирован</b></font></center>";
            
            }else echo "<center><font color = 'red'><b>На Ваш Email или IP уже был отправлен пароль за последние 15 минут</b></font></center>";
            
         }else echo "<center><font color = 'red'><b>Email указан неверно</b></font></center>";
      
      }else echo "<center><font color = 'red'><b>Символы с картинки введены неверно</b></font></center>";
   
   }

?>

<BR />
<form action="" method="post">
<table width="550" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td align="left" width="250">Email (На него будет выслан пароль):</td>
    <td align="left" width="250"><input name="email" type="text" size="25" maxlength="50" value="<?=(isset($_POST["email"])) ? $_POST["email"] : false; ?>"/></td>
  </tr>
 
  <tr>
    <td align="left" width="250" style="padding-top:20px;">
   <a href="#" onclick="ResetCaptcha(this);"><img src="/captcha.php?rnd=<?=rand(1,10000); ?>"  border="0" style="margin:0;"/></a>
   </td>
    <td align="left" width="250" style="padding-top:20px;">Введите символы с картинки<input name="captcha" type="text" size="25" maxlength="50" /></td>
  </tr>
 
  <tr>
    <td colspan="2" align="center"><BR /><input type="submit" value="Восстановить" style="height: 30px;"></td>
  </tr>
</table>
</form>
</div>
<div class="clr"></div>
[свернуть]

И нормально ли то, что при каждой попытке отправки пароля пишет что с данного ip или email за последние 15 минут была попытка восстановления (написал не точно, но вы поняли) что делать?
 

romcka8

  • *
  • Оффлайн
  • Награды Более 2 лет на форуме Более 500 сообщений Более 10 созданных тем
  • Дата регистрации: Фев 2016
  • Сообщений: 662
  • Страна: 00
  • Поблагодарили: 14 раз(а)
  • Репутация +2/-0
  • Пол: Мужской
    • Награды
Восстановление пароля
« Ответ #1 : 20 Июнь 2017, 12:43:34 »
Нет оценки
Возможно функция mail не включена на хостинге или ваш ip  в спам базах.
 

takebet

  • *
  • Оффлайн
  • Награды За время в онлайне на форуме Болеее 300 сообщений Более 2 лет на форуме Более 10 созданных тем
  • Дата регистрации: Янв 2016
  • Расположение: Москва
  • Возраст: 47
  • Сообщений: 342
  • Страна: ru
  • Поблагодарили: 14 раз(а)
  • Репутация +0/-2
  • Пол: Мужской
  • Дата рождения:1970-12-06
    • Награды
Восстановление пароля
« Ответ #2 : 20 Июнь 2017, 14:01:08 »
Нет оценки
У меня так же было. Восстанавливал на gmail почту пароль не пришел, а на яндекс пришел пароль
a:0:{}
 

APTEMOH

  • *
  • *
  • Оффлайн
  • Награды Более 500 сообщений Репутация более 10 Более 10 созданных тем Более 2 лет на форуме
  • Дата регистрации: Сен 2015
  • Расположение: Расположение
  • Сообщений: 523
  • Страна: th
  • Поблагодарили: 45 раз(а)
  • Репутация +12/-1
  • Пол: Мужской
    • Награды
  • Социальные сети:
    ВКонтакте
Восстановление пароля
« Ответ #3 : 20 Июнь 2017, 20:20:09 »
Нет оценки
Не работает восстановление. Письмо с паролем не приходит. В базу запись заноситься. Обязательно ли нужно иметь почтовый акк на хостинге?

Обязательно! Должен быть ящик на хостинге типо admin@sait.ru
Что бы в спам не улетало, нужно DCIM настроить, напишите в поддержку, они в теме.
Еще на mail.ru не дойдет, 99% в спам. Gamail и Yandex нормально работают.
Если не нужен "гемор", то используйте SMTP и будет вам счастье.

И нормально ли то, что при каждой попытке отправки пароля пишет что с данного ip или email за последние 15 минут была попытка восстановления (написал не точно, но вы поняли) что делать?

Убрать проверку, что бы не доставала )) Или из базы каждый раз удалять(автоматически через 15 мин удалиться.

vituxa

  • *
  • Оффлайн
  • Дата регистрации: Апр 2018
  • Сообщений: 7
  • Страна: ru
  • Репутация +0/-0
  • Пол: Мужской
    • Награды
Восстановление пароля
« Ответ #4 : 05 Июнь 2018, 03:06:58 »
Нет оценки
Здравствуйте у меня такая проблема восстановление работает только пароль шифроваться в мд5 и в базу заносит а сайт пишет что не правильный пишешь в зашифрованном виде заходит как исправить подскажите пожалуйста
 

kvozimir

  • снова в skype --> kvozimir
  • *
  • Оффлайн
  • Награды Репутация  более 25 Более 1500 сообщений Более 2 лет на форуме Более 50 созданных тем Благодарность от форума За помощь пользователям За время в онлайне на форуме
  • Дата регистрации: Фев 2016
  • Возраст: 26
  • Сообщений: 1637
  • Страна: ru
  • Поблагодарили: 145 раз(а)
  • Репутация +27/-0
  • Пол: Мужской
  • telegram --> @kvozimir
  • Дата рождения:1992-04-18
    • Награды
  • Социальные сети:
    ВКонтакте
Восстановление пароля
« Ответ #5 : 05 Июнь 2018, 04:12:57 »
Нет оценки
Здравствуйте у меня такая проблема восстановление работает только пароль шифроваться в мд5 и в базу заносит а сайт пишет что не правильный пишешь в зашифрованном виде заходит как исправить подскажите пожалуйста
скорей всего в файле авторизации нет кода чтобы мд5 понимал

 

whoohaw

  • *
  • Оффлайн
  • Награды Более 10 созданных тем Более 50 сообщений
  • Дата регистрации: Апр 2018
  • Расположение: Тверь
  • Возраст: 29
  • Сообщений: 77
  • Страна: ru
  • Поблагодарили: 9 раз(а)
  • Репутация +3/-1
  • Пол: Мужской
  • Дата рождения:1988-09-21
    • Награды
  • Социальные сети:
    ВКонтакте
Восстановление пароля
« Ответ #6 : 05 Июнь 2018, 10:02:53 »
Нет оценки
Если в базе данных пароль хранится только в хеше мд5 и а оригинального пароля нет, то простое восстановление не поможет. Ибо мд5 хеши необратимы. Тут спасут такие способы:
1. Переход по ссылке из почты с GET-параметрами и пользовательское создание нового пароля с преобразованием в мд5.
2. Присваивание нового пароля от ЛК и отправка оригинального значения в почту перед преобразованием в мд5 в таблицу.

Будут проблемы - пиши, пожалуйста :)
 

vituxa

  • *
  • Оффлайн
  • Дата регистрации: Апр 2018
  • Сообщений: 7
  • Страна: ru
  • Репутация +0/-0
  • Пол: Мужской
    • Награды
Восстановление пароля
« Ответ #7 : 06 Июнь 2018, 08:38:14 »
Нет оценки
А как это сделать в ответном письме приходит новый пароль и все а в наше он уже в хэше
 

whoohaw

  • *
  • Оффлайн
  • Награды Более 10 созданных тем Более 50 сообщений
  • Дата регистрации: Апр 2018
  • Расположение: Тверь
  • Возраст: 29
  • Сообщений: 77
  • Страна: ru
  • Поблагодарили: 9 раз(а)
  • Репутация +3/-1
  • Пол: Мужской
  • Дата рождения:1988-09-21
    • Награды
  • Социальные сети:
    ВКонтакте
Восстановление пароля
« Ответ #8 : 06 Июнь 2018, 09:56:15 »
Нет оценки
Привет! Все просто:
1. В переменную, например $temppass генерируем новый пароль. Скриптов-генераторов много, можно взять, они пишутся в две-три строки всего.
2. Переменную $yourpass хешируем то, что получилось в $temppass.
$yourpass=md5($temppass)
.
3. Ну и соответственно высылаем в почту юзера $temppass, а в базу заносим уже $yourpass.
 
Теги:
 

[Обзор]: Модуль принудительной смены пароля от аккаунта

Автор whoohawРаздел Фруктовые фермы: Легко и уверенно! ( от whoohaw )

Ответов: 5
Просмотров: 185
Последний ответ 24 Май 2018, 23:28:12
от whoohaw
Почта для фф востановление пароля

Автор toliasikРаздел Общие вопросы по фермам

Ответов: 4
Просмотров: 286
Последний ответ 19 Октябрь 2017, 23:14:30
от toliasik
Не приходит письмо на почту после запроса на восстановление пароля.

Автор Stas79Раздел Общие вопросы по фермам

Ответов: 6
Просмотров: 397
Последний ответ 03 Июль 2017, 06:31:09
от finans13
не работает Восстановление пароля Помогите

Автор SoloveyLevaРаздел Общие вопросы по фермам

Ответов: 8
Просмотров: 887
Последний ответ 27 Май 2018, 21:55:07
от whoohaw
Помогите! Восстановление пароля

Автор DenisKTРаздел Общие вопросы по фермам

Ответов: 1
Просмотров: 554
Последний ответ 01 Декабрь 2016, 19:25:53
от DenisKT
Имя пользователя:
Пароль:
Session: