PHP标头不适用于服务器,但在本地主机上运行完美

时间:2012-04-15 19:23:26

标签: php header

当我尝试使用我的本地主机时,下面这段代码完全正常,但是当我将它上传到我的服务器上时它无法正常工作

$sendquery = "INSERT INTO `message` (`from`, `to`, `subject`, `date`,`message`) VALUES ('".$_SESSION['UID']."', '".$toarray['Uid']."', '$subject','$d', '$message')";
$sendresult = mysql_query($sendquery);

if($sendresult)
{
    header('Location: home.php?action=inbox&success=1');

}
else
{
    header("Location: home.php?action=inbox&success=2");
}

我的服务器或代码有问题吗?

3 个答案:

答案 0 :(得分:1)

也许你在SQL中有错误。

如果您回复某些内容(如错误消息),则无法再更改标题。

标题在回显之前发送,并在此之后设置位置无效。

答案 1 :(得分:1)

在设置“位置”标题之前,请确保代码中没有任何内容开始输出 确保使用绝对网址(根据HTTP specification的要求)

样品:

header('Location: http://' . $_SERVER['HTTP_HOST'] . '/Home.php');

如果是这种情况,您的重定向应该有效。

输出已经开始的一些常见原因:

  • BOM(字节顺序标记)未正确处理
  • 警告或信息
  • 您的第一个<?php ... ?>
  • 之前的空格或任何其他HTML标记

答案 2 :(得分:0)

localhost和webserver一起存在很多差异。我猜测要在windows上开发并托管在linux上的问题。

小写所有标题字符串并在其后停止执行

header("location: home.php?action=inbox&success=2");
exit();