View file modules/auth.php

File size: 5.25Kb
<?
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">';

    $form = new form('?');
    $form->text('<div class="row"><img src="/engine/template/icons/help.png">');
    $form->text('Необходим аккаунт? <a style="color:green;" href="/modules/register.php">Зарегистрируйтесь сейчас!</a><hr/>');	
	$form->text('<img src="/engine/template/icons/password.png"> Забыли пароль к аккаунту? <a style="color:red;" href="/modules/lostpass.php">Восстановить его!</a><hr/></div>');	
	$form->input(Lang::__('Имя пользователя'),'nick','text',htmlspecialchars($login),(isset($error['nick']) ? '<span style="color:red"><small>' . implode('<br />', $error['nick']) . '</small></span><br />' : ''));
	    $form->text('<div style="font-size:12px;color: #a4a4a4;">Введите зарегестированный Логин</div>');
	$form->input(Lang::__('Пароль'),'password','password',false,(isset($error['password']) ? '<span style="color:red"><small>' . implode('<br />', $error['password']) . '</small></span><br />' : ''));
	    $form->text('<div style="font-size:12px;color: #a4a4a4;">Введите пароль которую вы установили</div>');
	$form->input2(false,'code','checkbox','1',false,Lang::__('Запомнить'));
	$form->submit('Авторизоваться','submit');
	$form->display();

echo '</div>';


?>