Просмотр файла modules/auth.php

Размер файла: 5.14Kb
<?
define('SHCMS_ENGINE',true);
include_once('../engine/system/core.php');
engine::auth();
$templates->template(Lang::__('Авторизация'));

$AboutGuest = new AboutGuest;

if(isset($_POST['submit'])) { $submit = $_POST['submit'];}
$errors = array();
if(isset($submit)) {
    //Из $_POST превращаем в обычные переменные и убираем слэши
    $nick = isset($_POST['login']) ? engine::trim($_POST['login']) : '';
	$pass = isset($_POST['password']) ? engine::trim($_POST['password']) : '';
     
		//Проверяем Логин
    if(empty($nick)) {
		$errors['nick'][] = Lang::__('Не введен логин');
	}elseif(mb_strlen($nick) < 2 || mb_strlen($nick) > 30) {
		$errors['nick'][] = Lang::__('Недопустимая длина логина');
	} 
		//Проверяем пароль
	if(empty($pass)) {
		$errors['pass'][] = Lang::__('Не введен пароль');
	}elseif(mb_strlen($pass) < 2 || mb_strlen($pass) > 30) {
		$errors['pass'][] = Lang::__('Недопустимая длина пароля');
	} 
	 
// Вытаскиваем из БД запись, у которой логин равняеться введенному
$query = $db->query("SELECT * FROM `users` WHERE `nick` = '".$nick."' LIMIT 1");
    if ($db->num_rows($query)) {

        //Обновляем данные пользователя в базе	
        $db->query("UPDATE `users` SET `lastdate` = '".time()."', `logged_ip` = '".$db->safesql(engine::get_ip())."' WHERE `nick` = '".$nick."' LIMIT 1");		
	    $users = $db->get_array($query);
		
		    //Кадируем пароль в md5()			
            $password = md5(md5($pass));
			
	//Сравниваем пароли
	    if($password == $users['password']) {
		
	        //Ставим куки
		    $COOKIE_ID = base64_encode($users['id']);
            $COOKIE_PASS = $password;
                setcookie("COOKIE_ID", $COOKIE_ID, time()+86400*365, '/');
                setcookie("COOKIE_PASS", $COOKIE_PASS, time()+86400*365, '/');
				
				    //Ставим сессию
		            $_SESSION['SESSION_ID'] = $users['id'];
                    $_SESSION['SESSION_PASS'] = $password;
					
		    //Если все правильно					
		    if ($users['lastdate'] < (time() - 3600)){
                echo engine::success(Lang::__('Успешная авторизация'));
			    header('Location: ../index.php');
                exit();
            }
        //Если возникла ошибка при введении данных
	    }else{

                $user_auth = $db->get_array($db->query("SELECT * FROM `users` WHERE `nick` = '".$nick."'"));
				if($user_auth['limit_auth'] >= $glob_core['un_auth']) {
				echo engine::error(Lang::__('Ваша учетная запись заблокирована на 5 минут!'));
				}else {
				$db->query("UPDATE `users` SET `limit_auth` = '".($user_auth['limit_auth']+1)."',`limit_time` = '".(time()+60*5)."' WHERE `id` = '".$user_auth['id']."'");
				$db->query("INSERT INTO `log_auth` SET `id_user` = '".intval($user_auth['id'])."',
								                                       `ip` = INET_ATON('".$AboutGuest->ip."'), 
								                                       `browser` = '".$AboutGuest->browser."',
																	   `version_browser` = '".$AboutGuest->version."',
																	   `oc` = '".$AboutGuest->operating_system."',
																	   `version_oc` = '".$AboutGuest->os_version."',
																	   `time` = '".time()."'");}													   
		    echo engine::error(Lang::__('Неверный логин и пароль'));
			echo engine::home(array(Lang::__('Назад'),'auth.php')); //Переадресация
            exit();
		}

    } else {
        //Переадресовываем браузер на страницу авторизации, если не верно
        echo engine::error(Lang::__('Логин %s не зарегистрирован',$nick));
		header('Refresh: 1; url=auth.php');
        exit();
    }

}
//Форма авторизации
echo '<div class="mainname">'.Lang::__('Войти').'</div>';
echo '<div class="mainpost">';
$form = new form('?');
$form->text('<div class="row"><img src="/engine/template/icons/help.png">');
$form->text('Необходим аккаунт? <a href="/modules/register.php">Зарегистрируйтесь сейчас!</a><hr/></div>');
$form->input('Имя пользователя:','login','text',false,(isset($errors['nick']) ? '<span style="color:red"><small>' . implode('<br />', $errors['nick']) . '</small></span><br />' : ''));
$form->input('Пароль:','password','password',false,(isset($errors['pass']) ? '<span style="color:red"><small>' . implode('<br />', $errors['pass']) . '</small></span><br />' : ''));
$form->submit('Войти','submit');
$form->display();
echo '</div>';

//Дополнительные действие
echo '<div class="mainname">Дополнительно</div>';
echo '<div class="mainpost">';
echo '<div class="row"><a href="lostpass.php">Восстановление пороля</a></div>';
echo '</div>';


?>