我一直在网站上工作并拥有以下代码......
<html>
<?php
session_start();
//if not logged redirect
if(!$_SESSION['logged']){
header("location:restricted.php");
}
else
//else continue and display the rest of the page
{
//html page content here
?>
...显然这样做是检查是否设置了会话变量'logged',如果没有,则将用户重定向到restricted.php,否则将显示其余代码(此页面)。 这是在服务器上工作正常,但我刚刚使用另一个主机(显然是服务器),如果没有设置会话,用户只是有一个空白页面(标题为此页面,不受限制.php )。 有人知道为什么会这样吗? 非常非常感谢...
答案 0 :(得分:5)
在调用session_start()之前,您无法向浏览器输出任何内容 - 它必须在所有输出之前输出,否则将抛出错误 - Headers already sent
正确的方式:
<?php
session_start();
//if not logged redirect
if(!$_SESSION['logged']){
header("location:restricted.php");
}
else
//else continue and display the rest of the page
{
//html page content here
?>
<html>
答案 1 :(得分:0)
<?php
session_start();
if(!$_SESSION['logged']){
header("location:restricted.php");
}
?>
<html>
<!-- This is only visible if you're logged in! -->
答案 2 :(得分:0)
也许您可以将Session变量与NULL
进行比较,可能会更清楚。
不要忘记将session_start();
放在页面上的任何其他内容之前。
答案 3 :(得分:0)
由于您的网站未配置为在浏览器中显示错误消息,因此您需要检查PHP的error_log
以准确了解错误是什么。
许多共享主机提供了一种查看错误日志的方法,或者至少通过您的主机帐户面板向您显示它们的位置。如果您有ssh访问权限,则可以使用以下命令找到此文件的路径:
$ php -i | grep error_log
或者,您可以使用以下命令在服务器上创建PHP文件:
<?php
phpinfo();
然后在浏览器中加载该文件并查找error_log
配置设置。
通过error_log
的路径,如果您拥有ssh访问权限,则可以输入
tail -f /path/to/your/error_log
在上述命令运行时,加载显示空白页面的网页。您的终端将在更新时转储error_log
的内容。如果您没有ssh访问权限,则主机可能会提供一种方法来查看PHP为您的站点生成的错误。
只有这样,您才能获得修复导致空白页面的所需信息。
答案 4 :(得分:0)
感谢every1的工作......我知道这听起来有点奇怪,但在旧服务器上它确实在session_start()之前使用了HTML。我是在Dreamweaver上做的,它有所有常见的垃圾Dreamweaver放入: ...如果一个移动这个会议开始下面它是一个空白页面,现在它反过来,它确实让我把它放在下面,工作正常......我知道很奇怪。 再次感谢所有回复:)