您好Stackoverflow会员!
问题
主文件:
<?php
$privileges = $_SESSION['privileges'];
switch ($privileges) {
case "admin":
echo '';
break;
case "user":
echo '';
break;
default:
header("location: nologon.php");
}
?>
“head.php”文件:
<?php
error_reporting(0);
include('connect.php');
session_start();
?>
<head>
<meta charset="utf-8">
<!--<?php include('./assets/js/block_mouse.min.js') ?>
<?php include('./assets/js/block_ctrl.min.js') ?>-->
<link href="assets/img/soccer.ico" rel="icon" type="image/x-icon" />
<link rel="stylesheet" href="./assets/css/stylesheet.css">
<script type="text/javascript" src="./assets/js/jquery.min.js"></script>
<script type="text/javascript" src="./assets/js/bootstrap.min.js"></script>
</head>
当服务器未登录时,服务器不会将客户端重定向到“nologon.php”页面。所有其他页面和PHP代码都能正常工作,但这不是吗?
截图:
主文件:
http://gyazo.com/cc7836bfddaceff4d1f4c27cbb05d67e
head.php文件:
http://gyazo.com/b1f67ad03081e4e958b2d673ac7e3316
答案 0 :(得分:0)
不完全确定,但我认为location:
需要Location:
另外,以防万一:
请记住,在任何实际输出之前必须调用header() 通过普通HTML标记,文件中的空行或PHP发送。 使用include或require读取代码是一个非常常见的错误, 函数或其他文件访问函数,并且有空格或空 调用header()之前输出的行。一样的问题 使用单个PHP / HTML文件时存在。
(来自php.net)
另外,exit;
,例如header('Location: nologin.php'); exit;
在查看截图后,将所有这些放在head.php文件的开头(根据需要移动它,但header
需要之前 head.php中的<head>
标记,例如 session_start();
之后的:
<?php
include 'head.php';
$privileges = $_SESSION['privileges'];
switch ($privileges) {
case "admin":
echo '';
break;
case "user":
echo '';
break;
default:
header("location: nologon.php");
exit;
}
?>
<html>
...
答案 1 :(得分:0)
更新了代码
<?php
if(isset($_SESSION['privileges'])
$privileges = $_SESSION['privileges'];
else
header("location: ./nologon.php");
switch ($privileges) {
case "admin":
echo '';
break;
case "user":
echo '';
break;
default:
header("location: nologon.php");
}
?>
历史: 如果nologin.php在同一文件夹中,则按如下方式使用:
header("location: ./nologon.php");
最好检查会话变量的isset。
如果nologon.php不在网站的根文件夹中,请将其移到那里。
如果未设置您的seesion变量,请使用以下代码:
if(!isset($_SESSION['privileges']) header("location: nologon.php');
答案 2 :(得分:0)
我认为会话数据有问题,因为它无论如何都能正常工作
尝试在它之前添加echo
echo header("Location: nologon.php");