Serj190492
Новичок
(только начал изучать php)
Делаю очень упрощенный вариант запоминания пользователя в сессии и куках.
По задумке, если есть куки или значение в сессии - пользователю не должна показываться страница входа (его перекидывает на страницу а или б, смотря что он посетил последний раз)
Проблема в следующем:
не получается осуществить проверку того, что пользователь заходил на сайт.
Перепробовал кучу вариантов, окончательно запутался в мыслях и коде, поэтому пришел сюда.
Делаю очень упрощенный вариант запоминания пользователя в сессии и куках.
По задумке, если есть куки или значение в сессии - пользователю не должна показываться страница входа (его перекидывает на страницу а или б, смотря что он посетил последний раз)
Проблема в следующем:
не получается осуществить проверку того, что пользователь заходил на сайт.
Перепробовал кучу вариантов, окончательно запутался в мыслях и коде, поэтому пришел сюда.
PHP:
<?php
//
// Авторизация.
//
function Login($username, $pass, $remember)
{
//Имя и пароль не должны быть пустой строкой.
if ($username == '' || $pass == '')
return false;
// Запоминаем имя и пароль в сессии
$_SESSION['username'] = $username;
$_SESSION['pass'] = $pass;
// и в cookies, если пользователь пожелал запомнить его (на неделю).
if ($remember) {
setcookie('username', $username, time() + 3600 * 24 * 7);
setcookie('pass', $pass, time() + 3600 * 24 * 7);
}
// Успешная авторизация.
return true;
}
//
// Сброс авторизации.
//
function Logout()
{
// Делаем cookies устаревшими (единственный способ их удаления).
setcookie('username', '', time() - 1);
setcookie('pass', '', time() - 1);
// Сброс сессии.
unset($_SESSION['username']);
unset($_SESSION['pass']);
session_destroy();
}
function check () {
if (isset($_SESSION['name']) || isset($_COOKIE['name'])) {
return true;
}
else {
return false;
}
}
//
// Точка входа.
//
session_start();
if (isset($_POST['logout'])) {
Logout();
}
$a = check();
$enter_site = false;
if ($a)
$enter_site = Login($_POST['username'], $_POST['pass'], $_POST['remember']);
// Переадресуем авторизованного пользователя на одну из страниц сайта.
if ($enter_site){
if (isset($_COOKIE['page'])){
if ($_COOKIE['page'] == "a"){
header("Location: a.php");
exit();
}
if ($_COOKIE['page'] == "b"){
header("Location: b.php");
exit();
}
}
else {
header("Location: a.php");
exit();
}
}
?>
<html>
<head>
<title>Вход на сайт</title>
</head>
<body>
<h1>Вход на сайт</h1>
<form action="" method="post">
Введите имя:
<br/>
<input type="text" name="username" />
<br/>
Введите пароль:
<br/>
<input type="text" name="pass" />
<br/>
<input type="checkbox" name="remember" /> Запоминть меня
<br/>
<input type="submit" value="Войти" />
</form>
</body>
</html>