Размер файла: 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>';
?>