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

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


$_IP = engine::get_ip();
$time = time();
$hash_login = '';
$error = array();
$AboutGuest = new AboutGuest;

    if( isset($_POST['submit'])) {
	
	    $login = $db->safesql(filter_input( INPUT_POST, 'nick', FILTER_SANITIZE_STRING ) );
		$password = $db->safesql(filter_input(INPUT_POST, 'password', FILTER_SANITIZE_STRING) );
		
		if( engine::strlen_shcms( $login,'utf-8' ) > 30 or engine::strlen_shcms( trim( $login ), 'utf-8' ) < 3) $error['nick'][] = 'Недопустимая длина ника. Логин должен быть больше 3 символов и меньше 30 символов!';
		if( preg_match( "/[\||\'|\<|\>|\[|\]|\"|\!|\?|\$|\@|\/|\\\|\&\~\*\{\+]/", $login ) ) $error['nick'][] = 'Введенный ник Недопустим';
		if( strlen($password) < 5 ) $error['password'][] = 'Пароль должен быть выше 5 символов';
		if( strpos( strtolower( $login ), '.php' ) !== false )  $error['nick'][] =  'Введенный ник недопустим';
		if( stripos( urlencode($login), '%AD') !== FALSE) {
						$error['nick'][] = 'Введенный ник недопустим';
				    }
		if(empty($error)) {
		$userl = $db->query( "SELECT * FROM `users` WHERE `nick` = '{$login}' LIMIT 1" );
	        if($db->num_rows($userl)) {
			    $user_aut = $db->get_array($userl);
				    
					if(engine::shgen($password) == $user_aut['password']) {
					    
						// Если все проверки прошли удачно, подготавливаем вход на сайт
                        if (isset($_POST['code'])) {
                            // Установка данных COOKIE
                            $cuser_id = base64_encode($user_aut['id']);
                            $cpassword = engine::shgen($password);
                            setcookie("cuser_id_shcms", $cuser_id, time() + 3600 * 24 * 365);
                            setcookie("cpassword_shcms", $cpassword, time() + 3600 * 24 * 365);
                        }
					    // Установка данных сессии
                        $_SESSION['user_id_shcms'] = $user_aut['id'];
                        $_SESSION['password_shcms'] = engine::shgen($password);	
                        
                    header("Location: ../index.php");						
			}else{

                $user_auth = $db->get_array($db->query("SELECT * FROM `users` WHERE `nick` = '{$login}'"));
				if($user_auth['limit_auth'] >= $glob_core['un_auth']) {
					die( engine::error( Lang::__('Ваша учетная запись заблокирована на 5 минут!') ) );
				}else {
					$db->query("UPDATE `users` SET `limit_auth` = '".($user_aut['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();
			}
			
			}
		}	
	
	}

//Форма авторизации
echo '<div class="mainname">'.Lang::__('Авторизация').'</div>';
echo '<div class="mainpost"><ul class="list_data clearfix">';

    $form = new form('?');
    $form->text('<li class="clear clearfix">');
    $form->text('<span class="row_title regstyle">'.Lang::__('Логин').':</span>');
    $form->text('<span class="row_data">');
    $form->input2(false,'nick','text',htmlspecialchars($login),'placeholder="Введите логин"');
    if(isset($error['nick'])) {
        $form->text('<p class="text-error small">'.implode('<br/>', $error['nick']).'</p>');
    }       
    $form->text('</span></li>'); 
    $form->text('<li class="clear clearfix">');
    $form->text('<span class="row_title regstyle">'.Lang::__('Пароль').':</span>');
    $form->text('<span class="row_data">');	
    $form->input2(false,'password','password',false,'placeholder="Введите пароль"');
    if(isset($error['password'])) {
        $form->text('<p class="text-error small">'.implode('<br/>', $error['password']).'</p>');
    }       
    $form->text('</span></li>');
        $form->text('<li class="clear clearfix">');
    $form->text('<span class="row_title regstyle">'.Lang::__('Запомнить').':</span>');
    $form->text('<span class="row_data">');	
	$form->input2(false,'code','checkbox','1');
         $form->text('</span></li><div class="form-actions">');
    $form->submit('Авторизация','submit',false,'btn btn-primary');
     $form->text('<a class="btn btn-warning" href="/modules/lostpass.php">Восстановление</a>');
	$form->display();

echo '</div></ul></div>';