forked from lain-dono/fl-ru-damp
-
Notifications
You must be signed in to change notification settings - Fork 0
/
changepwd.php
70 lines (59 loc) · 2.8 KB
/
changepwd.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<?php
require_once $_SERVER['DOCUMENT_ROOT'].'/classes/stdf.php';
require_once $_SERVER['DOCUMENT_ROOT'].'/classes/codes.php';
$stretch_page = 1;
$cuid = htmlspecialchars($_REQUEST['c']);
$action = trim($_REQUEST['action']);
$codes = new codes();
if (!$cuid) {
$master_error = 'Пройдите по ссылке в письме или скопируйте ее в адресную строку браузера';
} else {
$codes->GetRow($cuid);
if (!$codes->code) {
$master_error = '
Код для восстановления пароля не найден или устарел.
Возможно вы уже изменили пароль, если нет – повторите процедуру восстановления доступа еще раз.';
} else {
$uuid = $cuid;
}
}
if ($action == 'change' && !$master_error) {
$pwd = strip_tags(stripslashes(trim($_POST['pwd'])));
$pwd2 = strip_tags(stripslashes(trim($_POST['pwd2'])));
if (!preg_match('/^[a-zA-Z\d\!\@\#\$\%\^\&\*\(\)\_\+\-\=\;\,\.\/\?\[\]\{\}]+$/', $pwd)) {
$error = 'Пароль содержит недопустимые символы.<br>'
.'Пожалуйста, используйте только латинские буквы, цифры<br>'
.'и следующие спецсимволы: !@#$%^&*()_+-=;,./?[]{}';
} elseif (strcmp($pwd, $pwd2)) {
$error = 'Введенные пароли не совпадают';
} elseif ((strlen($pwd) < 6)) {
$error = 'Слишком короткий пароль (минимум — 6 символов)';
} elseif ((strlen($pwd) > 24)) {
$error = 'Слишком длинный пароль (максимум — 24 символа)';
}
if (!$error && $codes->user_id) {
require_once ABS_PATH.'/classes/users.php';
$user = new users();
$user->passwd = $pwd;
$err = $user->Update($codes->user_id, $res);
$u_id = $codes->user_id;
$codes->DelByUT($codes->user_id, 1);
if (!$err) {
$info = 'Изменения внесены';
require_once $_SERVER['DOCUMENT_ROOT'].'/classes/smail.php';
$smail = new smail();
$smail->ChangePwd($codes->user_id, $pwd);
// Пишем в лог смены паролей
require_once $_SERVER['DOCUMENT_ROOT'].'/classes/restorepass_log.php';
restorepass_log::SaveToLog($codes->user_id, getRemoteIP(), 1);
$pwd = users::hashPasswd(trim(stripslashes($pwd)));
$user->getUserByUID($u_id);
login($user->login, $pwd);
session_write_close();
header('Location: /');
exit;
}
}
}
$content = 'changepwd_inner.php';
include 'template3.php';