Просмотр файла modules/user/recovery.php

Размер файла: 3.82Kb
  1. <?php
  2. /**********************************
  3. * @package: PerfCMS *
  4. * @year: 2012 *
  5. * @author: Artas *
  6. * @link: http://perfcms.pp.ua *
  7. **********************************/
  8. if(isset($user)) { header('location: /'); exit; }
  9. $page = 'auth';
  10. if(isset($_POST['save_pass']) && $_GET['act']== 'change_pass' && isset($_GET['tmphash']) && isset($_GET['email'])) {
  11. $RecoveryUserData = $db->query("SELECT * FROM `users` WHERE `password` = '". input($_GET['tmphash']) ."' AND `email` = '". input($_GET['email']) ."'")->fetch();
  12. $pass1 = $_POST['npass'];
  13. $pass = $_POST['pass'];
  14. if (!empty($pass1) && (mb_strlen($pass1, 'UTF-8') < 5 || mb_strlen($pass1, 'UTF-8') > 64)) $err .= $lang->word('e_pass').'<br />';
  15. if (!empty($pass1) && !empty($pass) && $pass1 != $pass) $err .= $lang->word('e_pass2').'<br />';
  16. if(input($_GET['tmphash']) == $RecoveryUserData['password']) {
  17. $db->query("UPDATE `users` SET `password` = '". crypto($pass)."' WHERE `email` = '". input($_GET['email'])."' ");
  18. // print_r($db->errorInfo());
  19. go('/');
  20. } else { echo $lang->word('ex_mail').'<br/>'; }
  21. }
  22. $title = $lang->word('recovery');
  23. require_once(SYS.'/view/header.php');
  24. $tpl->div('title', $lang->word('recovery'));
  25. if(!empty($_POST['nick']) && !empty($_POST['email'])) {
  26. $nick = escape($_POST['nick']);
  27. $mail = input($_POST['email']);
  28. if($db->query("SELECT * FROM `users` WHERE `nick` = '". $nick ."' AND `email` = '". $mail ."'")->rowCount() == 1) {
  29. $RecoveryUserData = $db->query("SELECT * FROM `users` WHERE `nick` = '". $nick ."' AND `email` = '". $mail ."'")->fetch();
  30. import_lib('mail.class');
  31. $_libMail = new Mail('UTF-8');
  32. $_libMail->From('no-reply@'.$_SERVER['HTTP_HOST']);
  33. $_libMail->To($nick.';'.$mail);
  34. $_libMail->Subject("Password recovery | ".$lang->word('recovery')." - ".$_SERVER['HTTP_HOST']);
  35. $_libMail->Body($lang->word('hello').", ".$nick."!\n".
  36. $lang->word('recovery_1')." ".URL."\n".
  37. $lang->word('recovery_2')."\n
  38. ".URL."/user/recovery?act=reset&tmphash=".$RecoveryUserData['password']."&email=".$mail."\n
  39. ".$lang->word('recovery_3')."\n
  40. ".$lang->word('recovery_4')." ".$system['copyright']);
  41. $_libMail->Priority(3);
  42. $_libMail->Send();
  43. echo '<div class="menu">'.$lang->word('recovery_alert').'</div>';
  44. // print_r($_libMail->Get());
  45. $tpl->div('block', HICO .'<a href="/">'. $lang->word('home') .'</a>');
  46. require_once(SYS.'/view/footer.php');
  47. exit;
  48. }
  49. else
  50. {
  51. echo $tpl->div('error', $lang->word('fail_a'));
  52. }
  53. }
  54. elseif(isset($_GET['act']) && $_GET['act'] == 'reset' && isset($_GET['tmphash']) && isset($_GET['email']))
  55. {
  56. if($db->query("SELECT * FROM `users` WHERE `password` = '". input($_GET['tmphash']) ."' AND `email` = '". input($_GET['email']) ."'")->rowCount() == 1)
  57. {
  58. echo '<form action="?act=change_pass&tmphash='.input($_GET['tmphash']).'&amp;email='.input($_GET['email']).'" method="post">
  59. <div class="post">
  60. <b>'. $lang->word('new_e') .' '. $lang->word('password') .'</b><br/>
  61. <input type="text" name="npass"/><br/>
  62. <b>'. $lang->word('confirm') .' '. $lang->word('password') .'</b>:<br/>
  63. <input type="text" name="pass"/><br/>
  64. <input type="submit" name="save_pass" value="'. $lang->word('save') .'" /><br/>
  65. </div>
  66. </form>';
  67. $tpl->div('block', HICO .'<a href="/">'. $lang->word('home') .'</a>');
  68. require_once(SYS.'/view/footer.php');
  69. exit;
  70. }
  71. else
  72. {
  73. echo $tpl->div('error', $lang->word('fail_a'));
  74. }
  75. }
  76.  
  77. echo '<div class="menu">
  78. <form action="/user/recovery?" method="post">
  79. '. $lang->word('nick') .':<br/>
  80. <input type="text" name="nick" /><br/>
  81. E-mail:<br/>
  82. <input type="text" name="email" /><br/>
  83. <input type="submit" value="Ok!" />
  84. </form>
  85. </div>';
  86. $tpl->div('block', HICO .'<a href="/">'. $lang->word('home') .'</a>');
  87. require_once(SYS.'/view/footer.php');
  88. ?>