Просмотр файла pages/pass.php

Размер файла: 5.02Kb
  1. <?php
  2. include '../engine/includes/start.php';
  3. $set['title'] = 'Восстановление пароля';
  4. include H.'engine/includes/head.php';
  5. if ($user_id)
  6. Core::stop('/?');
  7.  
  8.  
  9. /*
  10. FoXxs
  11. */
  12.  
  13. if (isset($_GET['set_new']))
  14. {
  15. if ($sql->query("SELECT COUNT(*) FROM `user` WHERE `sess` = '".my_esc($_GET['set_new'], true)."'")->result() > 0)
  16. {
  17. if (isset($_POST['go2']))
  18. {
  19. if (empty($_POST['password_new']))
  20. {
  21. Core::msg_show('Введите новый пароль');
  22. }
  23. else
  24. {
  25. $user2 = $sql->query("SELECT `ank_mail`, `nick`, `id` FROM `user` WHERE `sess` = '".my_esc($_GET['set_new'], true)."'")->fetch();
  26. $password = md5($user2['id'] . $_POST['password_new']);
  27. $sql->query("UPDATE `user` SET `pass` = '$password' WHERE `id` = ".$user2['id']."");
  28. setcookie('user_id', $user2['id'], $time+60*60*24*365);
  29. setcookie('pass', $password, $time+60*60*24*365);
  30. $subject = 'Устанановлен новый пароль';
  31. $regmail = "Здравствуйте $user2[nick]<br />
  32. Вы сменили пароль через e-mail<br />
  33. Ваш новый пароль: <b>".$_POST['password_new']."</b><br />
  34. С уважением, администрация сайта <b>".$_SERVER['SERVER_NAME']."</b><br />";
  35. $adds = "From: \"password@$_SERVER[HTTP_HOST]\" <password@$_SERVER[HTTP_HOST]>\n";
  36. $adds .= "Content-Type: text/html; charset=utf-8\n";
  37. mail($user2['ank_mail'],'=?utf-8?B?'.base64_encode($subject).'?=',$regmail,$adds);
  38. Core::msg_show('Пароль успешно сменен');
  39. echo '<a href="/pages/user.php">Моя анкета</a>';
  40. }
  41.  
  42. }
  43. else
  44. {
  45. ?>
  46. <form method="post" action="?set_new=<?=htmlspecialchars($_GET['set_new'])?>&amp;go2">
  47. Введите новый пароль:<br />
  48. <input type="password" name="password_new" /><br />
  49. <input type="submit" name="go2" value="Завершить"/>
  50. </form>
  51. <?
  52. }
  53. }
  54. else
  55. Core::msg_show('Ошибка восстановления пароля');
  56. }
  57. else
  58. {
  59. if (isset($_POST['go']))
  60. {
  61. if (empty($_POST['login']))
  62. {
  63. Core::msg_show('Введите логин');
  64. $error_pass = true;
  65. }
  66. if (empty($_POST['email']))
  67. {
  68. Core::msg_show('Введите E-mail');
  69. $error_pass = true;
  70. }
  71. if (!isset($error_pass))
  72. {
  73. if ($sql->query("SELECT COUNT(*) FROM `user` WHERE `nick` = '".my_esc($_POST['login'],'true')."'")->result() > '0')
  74. {
  75. $user2 = $sql->query("SELECT `id`,`nick`,`ank_mail` FROM `user` WHERE `nick` = '".my_esc($_POST['login'],'true')."'")->fetch();
  76. if (empty($user2['ank_mail']))
  77. Core::msg_show('Восстановление пароля не возможно<br />На данном логине нет E-mail');
  78. elseif ($_POST['email'] !== $user2['ank_mail'])
  79. Core::msg_show('E-mail введен не верно');
  80. else
  81. {
  82. $new_sess = substr(md5(md5(md5(mt_rand()))), 0, 20);
  83. $subject = 'Восстановление пароля';
  84. $regmail = "Здравствуйте $user2[nick]<br />
  85. Вы активировали восстановление пароля<br />
  86. Для установки нового пароля перейдите по ссылке:<br />
  87. <a href=\"http://$_SERVER[HTTP_HOST]/pages/pass.php?id=$user2[id]&set_new=$new_sess\">http://$_SERVER[HTTP_HOST]/pages/pass.php?id=$user2[id]&amp;set_new=$new_sess</a><br />
  88. Данная ссылка действительна до первой авторизации под своим логином ($user2[nick])<br />
  89. С уважением, администрация сайта <b>".$_SERVER['SERVER_NAME']."</b><br />";
  90. $adds = "From: \"password@$_SERVER[HTTP_HOST]\" <password@$_SERVER[HTTP_HOST]>\n";
  91. $adds .= "Content-Type: text/html; charset=utf-8\n";
  92. mail($user2['ank_mail'],'=?utf-8?B?'.base64_encode($subject).'?=',$regmail,$adds);
  93.  
  94. $sql->query("UPDATE `user` SET `sess` = '$new_sess' WHERE `id` = '".$user2['id']."' LIMIT 1");
  95.  
  96. Core::msg_show('Письмо с ссылкой для активации пароля отправлена на Ваш E-mail '.$user2['ank_mail'].'');
  97. }
  98. }
  99. else
  100. Core::msg_show('Пользователь с таким логином не найден');
  101. }
  102. }
  103. ?>
  104. <form action="" method="POST">
  105. Логин:<br />
  106. <input type="text" name="login" /><br />
  107.  
  108. E-mail:<br />
  109. <input type="text" name="email" /><br />
  110. <input type="submit" name="go" value="Отправить" />
  111. </form>
  112. На ваш E-mail придет ссылка для установки нового пароля.<br />
  113. Если у вас в анкете отсутствует запись о вашем e-mail, восстановление пароля невозможно.<br />
  114. <?
  115. }
  116. include H.'engine/includes/foot.php';