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

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