您好我有以下文件:
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;这会引起什么问题吗?无论如何,这样的包含只会加载一次吗?
目前有人登录时显示“您作为管理员/受限制用户被挂起”的消息三次。
非常感谢您的帮助,谢谢。
答案 0 :(得分:1)
尝试使用require_once()
包含您的文件。此方法检查文件是否已包含在内。
答案 1 :(得分:1)
UGLY 方法
使用require_once
或include_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");
位之前没有数据发送到客户端(即如果您在echo
之前有任何print_r
,var_dump
或header ("Location: login.php");
...然后PHP会生成错误)