我已经完成了我的研究 - 并找到了这个问题的多种解决方案,但无论出于何种原因,我的仍然无法正常工作!
使用 IIS 在本地托管站点重定向工作正常,但是当我将它放在我的 Web 服务器上时,重定向不起作用。
下面是我的“myaccount.php”页面中的一段代码。
<?php
session_start();
if ($_SESSION['LoggedIn'] == true)
{
// ... Display page... lots of code here
}
else
// Session not active.
{
// Redirect to login page.
header("Location: http://{$_SERVER['HTTP_HOST']}/2ndassign/login.php");
}
?>
当该页面在线托管时,我只会看到一个空白的“myaccount.php”......不会发生重定向。不存在应该导致错误的空格。
所以,我已经把我的代码缩减到这个程度,让它尽可能的简单明了。错误报告已打开,因此它不再显示空白页面,而是吐出任何错误。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 'On');
header("Location:http://{$_SERVER['HTTP_HOST']}/2ndassign/login.php");
?>
您可以在 www.candlesoft.com.au/2ndassign/myaccount.php 查看该站点,这可能会帮助您帮助我 - 查看正在吐出的错误。
我的胆量告诉我这是我的托管服务提供商的设置。
PASTEBIN 上的代码 - 这是来自 www.candlesoft.com.au/2ndassign/myaccount.php 的 myaccount.php - 这不是摘录,而是整个文件。(显示空格不会导致错误) http://pastebin.com/FUHPpT5A
原来的错误是我需要将文件保存为 UTF-8(没有 BOM)...... PHP 似乎将 BOM 生成的某些字符解释为空格 - 在这里更好地解释:如何修复 PHP 中的“标头已发送”错误 感谢 Billy2mates 的链接!