国内流行的内容管理系统(CMS)多端全媒体解决方案 https://www.dedebiz.com
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

121 lines
4.5KB

  1. <?php
  2. /**
  3. * 修改密码
  4. *
  5. * @version $id:resetpassword.php 8:38 2010年7月9日 tianya $
  6. * @package DedeBIZ.User
  7. * @copyright Copyright (c) 2022 DedeBIZ.COM
  8. * @license https://www.dedebiz.com/license
  9. * @link https://www.dedebiz.com
  10. */
  11. require_once(dirname(__FILE__)."/config.php");
  12. require_once(DEDEMEMBER."/inc/inc_pwd_functions.php");
  13. if (empty($dopost)) $dopost = "";
  14. $id = isset($id) ? intval($id) : 0;
  15. if ($dopost == "") {
  16. include(dirname(__FILE__)."/templets/resetpassword.htm");
  17. } elseif ($dopost == "getpwd") {
  18. //验证验证码
  19. if (!isset($vdcode)) $vdcode = '';
  20. $svali = GetCkVdValue();
  21. $type = intval($type);
  22. $mail = HtmlReplace($mail, 0);
  23. if (strtolower($vdcode) != $svali || $svali == '') {
  24. ResetVdValue();
  25. ShowMsg("验证码输入错误", "-1");
  26. exit();
  27. }
  28. //验证邮箱,会员名
  29. if (empty($mail) && empty($userid)) {
  30. showmsg('请输入会员名或邮箱', '-1');
  31. exit;
  32. } else if (!empty($mail) && !preg_match("#(.*)@(.*)\.(.*)#", $mail)) {
  33. showmsg('请输入正确的邮箱格式', '-1');
  34. exit;
  35. } else if (CheckUserID($userid, '', false) != 'ok') {
  36. ShowMsg("您输入的会员名<span class='text-primary'>{$userid}</span>不合法", "-1");
  37. exit();
  38. }
  39. $member = member($mail, $userid);
  40. //以邮件方式取回密码
  41. if ($type == 1) {
  42. //判断系统邮件服务是否开启
  43. if ($cfg_sendmail_bysmtp == "Y") {
  44. sn($member['mid'], $userid, $member['email']);
  45. } else {
  46. showmsg('邮件服务暂未开启,请联系管理员', 'login.php');
  47. exit();
  48. }
  49. //以安全问题取回密码;
  50. } else if ($type == 2) {
  51. if ($member['safequestion'] == 0) {
  52. showmsg('您尚未设置安全密码,请通过邮件方式重设密码', 'login.php');
  53. exit;
  54. }
  55. require_once(dirname(__FILE__)."/templets/resetpassword3.htm");
  56. }
  57. exit();
  58. } else if ($dopost == "safequestion") {
  59. $mid = preg_replace("#[^0-9]#", "", $id);
  60. $sql = "SELECT safequestion,safeanswer,userid,email FROM `#@__member` WHERE mid = '$mid'";
  61. $row = $db->GetOne($sql);
  62. if (empty($safequestion)) $safequestion = '';
  63. if (empty($safeanswer)) $safeanswer = '';
  64. if ($row['safequestion'] === $safequestion && $row['safeanswer'] === $safeanswer) {
  65. sn($mid, $row['userid'], $row['email'], 'N');
  66. exit();
  67. } else {
  68. ShowMsg("您的安全问题或答案回答错误", "login.php");
  69. exit();
  70. }
  71. } else if ($dopost == "getpasswd") {
  72. //修改密码
  73. if (empty($id)) {
  74. ShowMsg("请不要非法提交", "login.php");
  75. exit();
  76. }
  77. $mid = preg_replace("#[^0-9]#", "", $id);
  78. $row = $db->GetOne("SELECT * FROM `#@__pwd_tmp` WHERE mid = '$mid'");
  79. if (empty($row)) {
  80. ShowMsg("请不要非法提交", "login.php");
  81. exit();
  82. }
  83. if (empty($setp)) {
  84. $tptim = (60 * 60 * 24 * 3);
  85. $dtime = time();
  86. if ($dtime - $tptim > $row['mailtime']) {
  87. $db->executenonequery("DELETE FROM `#@__pwd_tmp` WHERE `md` = '$id';");
  88. ShowMsg("临时密码修改期限已过期", "login.php");
  89. exit();
  90. }
  91. require_once(dirname(__FILE__)."/templets/resetpassword2.htm");
  92. } elseif ($setp == 2) {
  93. if (isset($key)) $pwdtmp = $key;
  94. $sn = md5(trim($pwdtmp));
  95. if ($row['pwd'] == $sn) {
  96. if ($pwd != "") {
  97. if ($pwd == $pwdok) {
  98. $pp = "pwd";
  99. if (function_exists('password_hash')) {
  100. $pp = "pwd_new";
  101. $pwdok = password_hash($pwdok, PASSWORD_BCRYPT);
  102. } else {
  103. $pwdok = md5($pwdok);
  104. }
  105. $sql = "DELETE FROM `#@__pwd_tmp` WHERE `mid` = '$id';";
  106. $db->executenonequery($sql);
  107. $sql = "UPDATE `#@__member` SET `$pp` = '$pwdok' WHERE `mid` = '$id';";
  108. if ($db->executenonequery($sql)) {
  109. ShowMsg('修改密码成功,请牢记新密码', 'login.php');
  110. exit;
  111. }
  112. }
  113. }
  114. ShowMsg('新密码为空或填写不一致', '-1');
  115. exit;
  116. }
  117. ShowMsg('临时密码错误', '-1');
  118. exit;
  119. }
  120. }
  121. ?>