跨页面的PHP会话

时间:2012-11-20 18:07:54

标签: php session

记住这个问题。我知道在互联网上有很多这样的问题,但是他们似乎都没有对我这么做:(

所以我打算在网站上制作管理员。您可以通过登录屏幕进入,当名称+传递正确时,会话进行。在其他管理员上,我将测试是否设置了此会话,我将知道用户是否可以访问该页面。

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,但没有任何作用..

2 个答案:

答案 0 :(得分:1)

在HTML之前的初始session_start中,尝试设置:

<?php session_start();  
$_SESSION["mysessionname"]; ?>
<html ...

这会在任何运行之前声明你的会话变量。

让我知道这是否有效。

答案 1 :(得分:0)

放弃session_regenerate_id。它发送另一个cookie,但输出已经发送。

同时取消对session_write_close的通话。无论如何,这将发生在脚本的最后,这种微优化会对代码库的质量产生负面影响。如果您遇到并发问题,请使用memcached会话存储,但距离那里很远。

同时放弃session_destroy来电。如果他未获得授权,则他未获得授权。你的逻辑建议清除已经空的会话。