0

您好我有以下文件:
login.php、index.php、header.php、footer.php、restrictaccess.php

restrictaccess.php 有以下代码:

<?php
session_start();
if (!(isset($_SESSION['user']) && $_SESSION['user'] != ''))
if (!(isset($_SESSION['access']) && $_SESSION['access'] != '')) 
{
header ("Location: login.php");
exit();
}


if($_SESSION['access']=="2" ) {
     echo 'You are logged on as Manager';

}
if($_SESSION['access']=="1" ) {
     echo 'You are logged on as Restricted user';
}
?>

每个页面都包含restrictaccess.php、header.php 和footer.php,接受login.php。
页眉和页脚都包含restrictaccess.php;这会引起什么问题吗?无论如何,这样的包含只会被加载一次?

目前,当有人登录时,“您以管理员/受限用户身份登录”的消息会显示三次。

您的帮助将不胜感激,谢谢。

4

2 回答 2

1

丑陋的方法

使用require_onceinclude_once用于restrictaccess.php

更好的方法

将restrictaccess.php 更改为仅:

<?php
if (!(isset($_SESSION['user']) && $_SESSION['user'] != ''))
if (!(isset($_SESSION['access']) && $_SESSION['access'] != '')) 
{
  header ("Location: login.php");
  exit();
}
?>

然后session_start()在每个客户端页面的顶部使用(用户可以浏览到的页面,如 index.php)。仅在 header.php 中使用有关“您以 ... 身份登录”的代码(或任何有意义的显示。

更新

您可以在文件中的任何位置包含上述restrictaccess.php您必须确保在该header ("Location: login.php");位之前没有数据发送到客户端(即,如果您有任何数据echoprint_r或者var_dump...在此之前,header ("Location: login.php");PHP 将生成错误)

于 2013-10-17T07:27:04.673 回答
1

尝试使用require_once()来包含您的文件。此方法检查文件是否已包含在内。

PHP手册

于 2013-10-17T07:23:35.513 回答