reset_pw.php 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. <?php
  2. if (!isset($_GET['p'])) {
  3. become404Page();
  4. }
  5. function resetPassword() {
  6. list($username, $check_code) = explode('.', base64url_decode($_GET['p']));
  7. if (!isset($_POST['newPW']) || !validatePassword($_POST['newPW'])) {
  8. return '操作失败,无效密码';
  9. }
  10. if (!isset($username) || !validateUsername($username)) {
  11. return '不明错误';
  12. }
  13. if (!isset($check_code)) {
  14. return '不明错误';
  15. }
  16. $newPW = $_POST['newPW'];
  17. $user = queryUser($username);
  18. if ($user == null) {
  19. return '不明错误';
  20. }
  21. if ($check_code !== md5($user['username'] . '+' . $user['password'])) {
  22. return '不明错误';
  23. }
  24. $newPW = getPasswordToStore($newPW, $user['username']);
  25. DB::update("update user_info set password = '$newPW' where username = '{$user['username']}'");
  26. return 'ok';
  27. }
  28. if (isset($_POST['reset'])) {
  29. die(resetPassword());
  30. }
  31. ?>
  32. <?php
  33. $REQUIRE_LIB['dialog'] = '';
  34. $REQUIRE_LIB['md5'] = '';
  35. ?>
  36. <?php echoUOJPageHeader('更改密码') ?>
  37. <h2 class="page-header">更改密码</h2>
  38. <form id="form-reset" class="form-horizontal">
  39. <div id="div-password" class="form-group">
  40. <label for="input-password" class="col-sm-2 control-label">新密码</label>
  41. <div class="col-sm-3">
  42. <input type="password" class="form-control" id="input-password" name="password" placeholder="输入新密码" maxlength="20" />
  43. <input type="password" class="form-control top-buffer-sm" id="input-confirm_password" placeholder="再次输入新密码" maxlength="20" />
  44. <span class="help-block" id="help-password"></span>
  45. </div>
  46. </div>
  47. <div class="form-group">
  48. <div class="col-sm-offset-2 col-sm-3">
  49. <button type="submit" id="button-submit" class="btn btn-secondary">提交</button>
  50. </div>
  51. </div>
  52. </form>
  53. <script type="text/javascript">
  54. function validateResetPwPost() {
  55. var ok = true;
  56. ok &= getFormErrorAndShowHelp('password', validateSettingPassword);
  57. return ok;
  58. }
  59. $(document).ready(function() {
  60. $('#form-reset').submit(function(e) {
  61. if (!validateResetPwPost()) {
  62. return false;
  63. }
  64. $.post(<?= json_encode($_SERVER['REQUEST_URI']) ?>, {
  65. reset : '',
  66. newPW : md5($('#input-password').val(), "<?= getPasswordClientSalt() ?>")
  67. }, function(res) {
  68. if (res == 'ok') {
  69. BootstrapDialog.show({
  70. title : '提示',
  71. message : '密码更改成功',
  72. type : BootstrapDialog.TYPE_SUCCESS,
  73. buttons: [{
  74. label: '好的',
  75. action: function(dialog) {
  76. dialog.close();
  77. }
  78. }],
  79. onhidden : function(dialog) {
  80. window.location.href = '/login';
  81. }
  82. });
  83. } else {
  84. BootstrapDialog.show({
  85. title : '提示',
  86. message : res,
  87. type : BootstrapDialog.TYPE_DANGER,
  88. buttons: [{
  89. label: '好的',
  90. action: function(dialog) {
  91. dialog.close();
  92. }
  93. }]
  94. });
  95. }
  96. });
  97. return false;
  98. });
  99. });
  100. </script>
  101. <?php echoUOJPageFooter() ?>