记住这个问题。我知道在互联网上有很多这样的问题,但是他们似乎都没有对我这么做:(
所以我打算在网站上制作管理员。您可以通过登录屏幕进入,当名称+传递正确时,会话进行。在其他管理员上,我将测试是否设置了此会话,我将知道用户是否可以访问该页面。
Inlog.php(简称)
<?php session_start(); ?> <html ...
然后经过大量的控制
if ($adminpwd == $pass) {
session_regenerate_id();
$_SESSION["mysessionname"] = $name;
$tijd = date('H:i:s', strtotime('+ 30 minutes'));
$_SESSION["E4A_einde"] = $tijd;
session_write_close();
echo "<script type='text/javascript'>window.location = 'myotheradminpage'</script>";
}
我的其他php页面包含此脚本
<?php session_start();
if (!isset($_SESSION["mysessionname"])) {
session_destroy();
echo '<SCRIPT LANGUAGE="JavaScript"> window.alert("no session found") </SCRIPT>';
echo "<script type='text/javascript'>window.location = 'myloginpage'</script>";
}
使用此元素,如果未设置会话,则会有重定向,如果设置了会话,则会触发php页面上的其他代码。
但事实是每次我都会重定向到我的登录页面。所以我的会话没有设置:s无法弄清楚为什么所以请帮助我。
我在每个页面上尝试了很多,以添加session_start()方法,我尝试在设置会话之前重新生成会话ID,但没有任何作用..
答案 0 :(得分:1)
在HTML之前的初始session_start
中,尝试设置:
<?php session_start();
$_SESSION["mysessionname"]; ?>
<html ...
这会在任何运行之前声明你的会话变量。
让我知道这是否有效。
答案 1 :(得分:0)
放弃session_regenerate_id
。它发送另一个cookie,但输出已经发送。
同时取消对session_write_close
的通话。无论如何,这将发生在脚本的最后,这种微优化会对代码库的质量产生负面影响。如果您遇到并发问题,请使用memcached
会话存储,但距离那里很远。
同时放弃session_destroy
来电。如果他未获得授权,则他未获得授权。你的逻辑建议清除已经空的会话。