1 | <?php
|
---|
2 |
|
---|
3 | // Загружаем файл перевода для smarty
|
---|
4 | $smarty->config_load($conf_file,'account');
|
---|
5 |
|
---|
6 | // Создание аккаунта
|
---|
7 | if (($_REQUEST['account']=='signup') and (isset($_POST['username'])) and (isset($_POST['password'])) and (isset($_POST['c_password'])) and ($AoWoWconf['register']==true))
|
---|
8 | {
|
---|
9 | // Совпадают ли введенные пароли?
|
---|
10 | if ($_POST['password'] != $_POST['c_password'])
|
---|
11 | {
|
---|
12 | $smarty->assign('signup_error', $smarty->get_config_vars('Different_passwords'));
|
---|
13 | } else {
|
---|
14 | // Существует ли уже такой пользователь?
|
---|
15 | if ($rDB->selectCell('SELECT Count(id) FROM account WHERE username=? LIMIT 1', $_POST['username']) == 1)
|
---|
16 | {
|
---|
17 | $smarty->assign('signup_error', $smarty->get_config_vars('Such_user_exists'));
|
---|
18 | } else {
|
---|
19 | // Вроде все нормально, создаем аккаунт
|
---|
20 | $success = $rDB->selectCell('INSERT INTO account(`username`, `sha_pass_hash`, `gmlevel`, `email`, `joindate`, `tbc`, `last_ip`)
|
---|
21 | VALUES (?, ?, 0, ?, NOW(), 1, ?)',
|
---|
22 | $_POST['username'],
|
---|
23 | create_usersend_pass($_POST['username'], $_POST['password']),
|
---|
24 | (isset($_POST['email']))? $_POST['email'] : '',
|
---|
25 | (isset($_SERVER["REMOTE_ADDR"]))? $_SERVER["REMOTE_ADDR"] : ''
|
---|
26 | );
|
---|
27 | if ($success > 0)
|
---|
28 | {
|
---|
29 | // Все отлично, авторизуем
|
---|
30 | $_REQUEST['account']='signin';
|
---|
31 | } else {
|
---|
32 | // Неизвестная ошибка
|
---|
33 | $smarty->assign('signup_error', $smarty->get_config_vars('Unknow_error_on_account_create'));
|
---|
34 | }
|
---|
35 | }
|
---|
36 | }
|
---|
37 | }
|
---|
38 |
|
---|
39 | if (($_REQUEST['account']=='signin') and (isset($_POST['username'])) and (isset($_POST['password'])))
|
---|
40 | {
|
---|
41 | $usersend_pass = create_usersend_pass($_POST['username'], $_POST['password']);
|
---|
42 | $user = CheckPwd($_POST['username'], $usersend_pass);
|
---|
43 | if ($user==-1)
|
---|
44 | {
|
---|
45 | del_user_cookie();
|
---|
46 | if (isset($_SESSION['username']))
|
---|
47 | UnSet($_SESSION['username']);
|
---|
48 | $smarty->assign('signin_error', $smarty->get_config_vars('Such_user_doesnt_exists'));
|
---|
49 | } elseif ($user==0) {
|
---|
50 | del_user_cookie();
|
---|
51 | if (isset($_SESSION['username']))
|
---|
52 | UnSet($_SESSION['username']);
|
---|
53 | $smarty->assign('signin_error', $smarty->get_config_vars('Wrong_password'));
|
---|
54 | } else {
|
---|
55 | // Имя пользователя и пароль совпадают
|
---|
56 | $_SESSION['username'] = $user['name'];
|
---|
57 | $_SESSION['shapass'] = $usersend_pass;
|
---|
58 | $_REQUEST['account'] = 'signin_true';
|
---|
59 | $_POST['remember_me'] = (IsSet($_POST['remember_me'])) ? $_POST['remember_me'] : 'no';
|
---|
60 | if ($_POST['remember_me']=='yes')
|
---|
61 | {
|
---|
62 | // Запоминаем пользователя
|
---|
63 | $remember_time = time() + 3000000;
|
---|
64 | SetCookie('remember_me',$_POST['username'].$usersend_pass,$remember_time);
|
---|
65 | } else {
|
---|
66 | del_user_cookie();
|
---|
67 | }
|
---|
68 | }
|
---|
69 | }
|
---|
70 |
|
---|
71 |
|
---|
72 | switch($_REQUEST['account']):
|
---|
73 | case '':
|
---|
74 | // TODO: Настройки аккаунта (Account Settings)
|
---|
75 | break;
|
---|
76 | case 'signin_false':
|
---|
77 | case 'signin':
|
---|
78 | // Вход в систему
|
---|
79 | $smarty->assign('register', $AoWoWconf['register']);
|
---|
80 | $smarty->display('signin.tpl');
|
---|
81 | break;
|
---|
82 | case 'signup_false':
|
---|
83 | case 'signup':
|
---|
84 | // Регистрация аккаунта
|
---|
85 | $smarty->display('signup.tpl');
|
---|
86 | break;
|
---|
87 | case 'signout':
|
---|
88 | // Выход из пользователя
|
---|
89 | UnSet($user);
|
---|
90 | session_unset();
|
---|
91 | session_destroy();
|
---|
92 | $_SESSION = array();
|
---|
93 | del_user_cookie();
|
---|
94 | case 'signin_true':
|
---|
95 | default:
|
---|
96 | // На предыдущую страницу
|
---|
97 | // Срабатывает при:
|
---|
98 | // 1. $_REQUEST['account'] = 'signout' (выход)
|
---|
99 | // 2. $_REQUEST['account'] = 'signok' (успешная авторизация)
|
---|
100 | // 3. Неизвестное значение $_REQUEST['account']
|
---|
101 | $_REQUEST['next'] = (IsSet($_REQUEST['next']))? $_REQUEST['next'] : '';
|
---|
102 | if (($_REQUEST['next']=='?account=signin') or ($_REQUEST['next']=='?account=signup'))
|
---|
103 | $_REQUEST['next']='';
|
---|
104 | header('Location: ?'.$_REQUEST['next']);
|
---|
105 | break;
|
---|
106 | endswitch;
|
---|
107 | ?>
|
---|