| 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 | ?>
|
|---|