Кнопка "выход"

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>
 

Vano

Новичок
ЗЫ: я уже и вопрос сформировать не могу:)
Если признаешь, значит уже на верном пути. Без шуток, если ты хоть чуть-чуть что-то не понимаешь (или даже чутку забыл) что такое сессии, куки и как общаются клиент и сервер веб-приложения(а по предыдущим вопросам видно что так и есть) Читай - http://phpfaq.ru/newbie/na_tanke
 

Vano

Новичок
Ну смотри, если ты запутался в скрипте своём, то другим тоже будет влом разбиратся) Постарайся задавать вопросы поточнее, тогда получишь ответы.
 

Vano

Новичок
Я тут посмотрел тебя вечно перенаправляет на a.php? Если да посмотри почему всё условия у тебя в False
 

Serj190492

Новичок
PHP:
$a = check();
$enter_site = false;

if ($a)
$enter_site = Login($_POST['username'], $_POST['pass'], $_POST['remember']);
где-то здесь наверное косяк, потому что если убрать проверку if($a) - перенаправляет...
 

JOSS-PHP

Новичок
а мне кажется что в функции check надо проверять username , а не name
 

Serj190492

Новичок
Короче разобрался сам и сделал всё проще. Сделал отдельно страницы index.php и login.php

Содержимое индекса:
PHP:
<?php
session_start();
if (!isset($_SESSION['username']) && isset($_COOKIE['username'])){
$_SESSION['username'] = $_COOKIE['username'];
}
// Еще раз ищем имя пользователя в контексте сессии.
$username = $_SESSION['username'];
// Неавторизованных пользователей отправляем на страницу регистрации.
if ($username == null) {
    header("Location: login.php");
    exit();
}
else {
    $page = $_COOKIE['page'];
    header("Location: $page");
    exit();
}

?>
 

WMix

герр M:)ller
Партнер клуба
Код:
firebug > js-console
> document.cookie = 'username=admin; expires=Fri, 1 Jan 2020 12:00:00 UTC; path=/'
 
Сверху