Фреймы и сессия
Код вывода страницы (построение фреймов и т.д.):
Код:
<?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;
}
?>
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;
?>
<!-- блаблабла. текст опущен -->
<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: за код не ругать. пока что все без дизайна))) консольно работает)
Извините что поднимаю старую тему. Просто хочу отписаться. пролема решена)) Совсем вылетело из головы что в Опере cookie ставятся по другому (ну т.е. время жизни по другому ставится, через time()+$cookie_time); =)