Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Фреймы и сессия

244
04 марта 2007 года
UAS
2.0K / / 19.07.2006
Вообщем делаю ща админку с применеием сессий. Вид админки: 2 фрейма, один - навигация, второй соответственно вывод инфы.

Код вывода страницы (построение фреймов и т.д.):
Код:
<?php
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); // always modified
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Pragma: no-cache"); // HTTP/1.0

// тута всякие инклюды, подсоединение БД и т.д.

$DB->query("DELETE FROM online WHERE ".time()."-last_activity>".$config["online"]);
session_cache_expire($config["session_expire"]);
session_start();

if( !isset($_SESSION["last_activity"]) or ((time()-$_SESSION["last_activity"])>$config["online"]) ) {
    $_SESSION = array();
    if(isset($_COOKIE[session_name()])) {
        setcookie(session_name(), '', time()-42000, '/');
    }
    session_destroy();
    die("!!!Незареген!!!");
}

if((int)$_SESSION["status"]!==1) {
    die("Ты не АДМИН!!!");
}

define("IN_ADMIN",true);
######################################################################################################################
if(!isset($_REQUEST["action"]))$_REQUEST["action"]=NULL;

switch($_REQUEST["action"]) {
    case "stat":
        include("stat.php");
        break;
    case "new_event":
        define("ACTION","new");
        include("events.php");
        break;

    case "exit":
        $_SESSION = array();
        if(isset($_COOKIE[session_name()])) {
            setcookie(session_name(), '', time()-42000, '/');
        }
        session_destroy();
        die("!!!Вышли!!!");
        break;    
    default:
        ## если все ок и !$_GET["action"] тогда грузим админпанель
       include("tpl/_frameset.tpl");
        break;
}
?>


файл tpl/_frameset.tpl:
Код:
<?php echo <<<DATA
<!-- блаблабла. текст опущен -->
<frameset cols="180,*" border="1" frameborder="1" framespacing="1">
 <frame src="tpl/_menu.html" name="menu" marginwidth="0" marginheight="0" scrolling="auto" frameborder="0" noresize>
 <frame src="index.php?action=stat" name="center" marginwidth="0" marginheight="0" scrolling="auto" frameborder="0" noresize>
</frameset>
<body>
</body>
</html>
DATA
;
?>


Проблема:
в меню есть ссылки. Но почему-то сессия не передается. Я выяснил, что когда в начале идет проверка на isset($_SESSION["last_activity"]), то возвращается false, т.е. получается сессия не определилась. Но по идее то cookies должны были установиться!:confused: Кукис на клиенте включены.
Вот я и не знаю. Почему то не пашет. По идее все решается если к ссылкам добавить PHPSESSID, но хочется понять в чем проблема...

PS: за код не ругать. пока что все без дизайна))) консольно работает)
244
16 марта 2007 года
UAS
2.0K / / 19.07.2006
Извините что поднимаю старую тему. Просто хочу отписаться. пролема решена)) Совсем вылетело из головы что в Опере cookie ставятся по другому (ну т.е. время жизни по другому ставится, через time()+$cookie_time); =)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог