source: aowow/account.php

Last change on this file was 171, checked in by maron, 16 years ago

Tato + minulá revize obsahuje aowow

File size: 3.8 KB
Line 
1<?php
2
3// Загружаем файл перевода для smarty
4$smarty->config_load($conf_file,'account');
5
6// Создание аккаунта
7if (($_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
39if (($_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
72switch($_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;
106endswitch;
107?>
Note: See TracBrowser for help on using the repository browser.