1

有这个问题。我知道互联网上有很多这样的问题,但似乎没有一个对我有用:(

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

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,但没有任何效果..

4

2 回答 2

1

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

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

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

让我知道这个是否奏效。

于 2012-11-20T18:13:29.660 回答
0

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

同时挂断电话session_write_close。无论如何,它都会发生在脚本的末尾,并且这种微优化会对代码库的质量产生负面影响。如果您有并发问题,请使用memcached会话存储,但您离那里还很远。

也挂断session_destroy电话。如果他没有被授权,那么他就没有被授权。您在这里的逻辑建议清除已经为空的会话。

于 2012-11-20T18:19:50.283 回答