【发布时间】:2011-07-06 01:48:29
【问题描述】:
这是我在这里的第一个问题,我会尽量遵循我在注册时收到的所有建议......
我的问题是尝试执行 PHP 重定向时出现“已发送标头”错误。
我有这个小脚本来测试重定向:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" >
</head>
<body>
<?php
if (isset($_POST['go']) && $_POST['go'] == 'go') {
$redirectURL = 'test1.php';
header( 'Location: ' . $redirectURL ) ;
exit();
}
echo '<p>This is Page 1. We will test a redirect. Type in \'go\' and hit submit:</p><br><br>';
echo '<form name="test" method="post" action="' . $_SERVER['PHP_SELF'] . '">';
echo '<input type="text" name="go">';
echo '<input type="submit" name="submit">';
echo '</form>';
?>
</body>
</html>
在 Windows 服务器上运行时重定向很好,但在 Apache 上它给出了错误:
警告:无法修改标头信息 - 第 10 行 /home/simply92/public_html/test/testUTF.php 中的标头已由(输出开始于 /home/simply92/public_html/test/testUTF.php:7)发送
第 7 行是 php 标签。
我使用我的网络主机的代码编辑器通过编码 ISO-8859-1 进行保存(这应该可以排除任何 BOM,对吗?)我将 php.ini 中的默认字符集设置为 ISO-8859-1 为好吧(以防万一。)
一个奇怪的事情是,当我删除 doctype 和 php 标记之前的所有内容并且脚本中的第一行是 <?php 时,它甚至会在 Apache 上重定向。显然这不是解决办法。
所以我的问题是:我怎样才能在我的 header() 调用之前找出正在发送的内容,然后,我怎样才能摆脱它?
希望有人能指出我正确的方向!
提前致谢。
【问题讨论】:
标签: php redirect http-headers