Просмотр файла login.php

Размер файла: 3.39Kb
<?php
# Morgan

	require 'sys/inc/core.php';

		switch(MODE)
	{
	default:
	case 'enter':
	// авториза / рега
	{

	only_unreg();

	show_title('Авторизация', 'Вход');

	if(isset($_GET['referer']))
		{
		$to = rawurlencode($_GET['referer']);
		}

	if(isset($_POST['auth']))
		{
		check_fields(PATH.'login.php?mode=enter'.(!empty($to) ? '&referer='.rawurlencode($to) : null), array(array('login', 'not null', 'maxlen' => 40, 'minlen' => 3), array('password', 'not null', 'minlen' => 3)));

		$login = str($_POST['login'], 40);
		if(!preg_match('~^[[:space:]a-zA-Zа-яА-ЯЁё0-9-._]+$~u', $login))err('Введите верный логин', PATH.'login.php?mode=enter'.(!empty($to) ? '&referer='.rawurlencode($to) : null));
		
		$password = trim($_POST['password']);
		$password_hash = get_hash($password);

		if($db -> one("SELECT COUNT(*) FROM `users` WHERE `login` = '$login'") > 0)
			{
			$user_data = $db -> fetch("SELECT `login`, `nick`, `password` FROM `users` WHERE `login` = '$login'");
			if($user_data['login'] == $login && $user_data['password'] == $password_hash)
				{
				$_SESSION['userdata'] = array('login' => $login, 'password' => $password_hash);
				xcookie('user_login', $login);
				xcookie('user_password', base64_encode(get_int_hash($password_hash)));
				msg($user_data['nick'].', вы успешно вошли', (isset($to) ? $to : PATH.'index.php'));
				}
			else
				{
				err('Ошибка', PATH.'login.php?mode=enter'.(!empty($to) ? '&referer='.rawurlencode($to) : null));
				}
			}
		else
			{

			if($cfg['open_reg'] == 0)err('Регистрация приостановленна', PATH.'login.php?mode=enter');

			check_captcha(PATH.'login.php?mode=enter'.(!empty($to) ? '&referer='.rawurlencode($to) : null));

			if($db -> sql("INSERT INTO `users` SET `login` = '$login', `nick` = '$login', `password` = '$password_hash', `date_reg` = '".TIME."', `level` = '1', `set_onpage_topics` = '{$cfg['onpage_topics']}', `set_onpage_posts` = '{$cfg['onpage_posts']}', `active` = '{$cfg['users_active']}', `ip` = '".MY_INT_IP."', `ua` = '".MY_UA."', `info_sex` = '1'"))
				{
				$_SESSION['userdata'] = array('login' => $login, 'password' => $password_hash);
				$user_id = $db -> last_id();
				if($user_id == 1)
					{
					$db -> sql("UPDATE `users` SET `level` = '3' WHERE `id` = '1'");
					}
				
				xcookie('user_login', $login);
				xcookie('user_password', base64_encode(get_int_hash($password_hash)));
				msg('Вы успешно зарегистрированы<br />Ваши данные : '.$login.' - '.str($password, null, true, false), (isset($to) ? $to : PATH.'index.php'));
				}
			else
				{
				err('Ошибка', PATH.'login.php?mode=enter'.(!empty($to) ? '&referer='.rawurlencode($to) : null));
				}

			}

		}

	$template -> block = 'enter';

	if(!empty($to))$template -> referer = rawurlencode($to);

	$_SESSION['captcha'] = rand(10,99);

	$template -> display('login.page');

	}
	break;
	############################################################################
	case 'exit':
	// выход
	{

	only_reg();

	xcookie('user_login');
	xcookie('user_password');
	unset($_SESSION['userdata']);

	msg('До скорой встречи, '.(!empty($userdata['info_name']) ? $userdata['info_name'] : $userdata['nick']), PATH.'index.php');

	}
	break;
	}

show_foot();

# Morgan
?>