我有一个用php制作的网站,它使用整个网站的服务器端会话.
实际上,它是一个具有用户登录的站点,它依赖于会话变量,如果所有会话变量都存在问题,则根本不会加载任何页面.
在网站上,有一个iframe,其中包含来自其他用户的小消息.
这些小消息旁边有可点击的照片,用于打开用户的个人资料.
现在,每个页面都需要一些格式来打开该特定页面上的用户配置文件...实际上只有几个问题页面,但这些页面必须具有稍微不同的onclick功能或者它们会破坏页面.
所以我在每个页面上设置了一个会话变量($_SESSION["current_page"]),让Feed知道如何格式化可点击的照片.现在Firefox,Opera,Chrome,Safari都可以正常工作.
但IE6和IE7在需要特殊格式的页面上遇到问题.
所以在把我的头发拉了一下之后,我终于开始从服务器打印我的会话变量了.
并且,在特殊页面上,($_SESSION["current_page"])始终设置为"main"而不是"special1"或"special2".
我在Firefox和我提到的所有其他浏览器中打印了相同的会话变量,并且它们打印出"special1"或"special2".
谁能想到一些东西 - 可能与饲料在iframe中的事实有关? - 这将导致IE以不同方式处理服务器端会话变量或以某种方式在后台静默启动页面"main"?
我已经非常仔细地检查了feed以查找对"main"页面的任何引用 - 它似乎没有任何方式它正在加载该页面.
这对我没有意义.
我试图检测我的页面上的用户是否启用了cookie.以下代码执行检查,但是,我不知道如何将用户重定向到他们来自的页面.
该脚本启动会话并检查它是否已检查过cookie.如果没有,它会将用户重定向到测试页面,因为我在第一页中调用了session_start(),所以如果用户代理启用了cookie,我应该看到PHPSESSID cookie.
问题是,该脚本可能是从我网站的任何页面调用的,我必须将它们重定向回所选页面,比如index.php?page = news&postid = 4.
session_start();
// Check if client accepts cookies //
if (!isset($_SESSION['cookies_ok'])) {
if (isset($_GET['cookie_test'])) {
if (!isset($_COOKIE['PHPSESSID'])) {
die('Cookies are disabled');
} else {
$_SESSION['cookies_ok'] = true;
header(-------- - ? ? ? ? ? -------- -);
exit();
}
}
if (!isset($_COOKIE['PHPSESSID'])) {
header('Location: index.php?cookie_test=1');
exit();
}
}
Run Code Online (Sandbox Code Playgroud)