标题位置信息无法修改

时间:2012-12-12 03:58:42

标签: php header

<?php
 echo $_REQUEST['uname'];
 echo $_REQUEST['pass'];

$res= $mysql_query("select * from `sec` where uname='$_REQUEST['uname']' AND    `pass`='$_REQUEST['pass']'");

if(mysql_num_rows($res)>0)
{
 header('location:home.php')
}
else
{
 header('location:index.php')
}

?>

这是什么错误:header information cannot modify... 即使用户名和密码是正确的,它不会重定向到另一个页面并发出此警告.. 为什么会出现这个错误?

6 个答案:

答案 0 :(得分:1)

在将数据回显到页面后,您无法进行PHP标头重定向。

取出回声,它应该有效。另外,在这些标题函数的末尾加上分号。

答案 1 :(得分:1)

任何输出发送到浏览器后,您无法发送标头。你在前两行做到了这一点。您可以使用output buffering解决此问题。

答案 2 :(得分:1)

从代码的第一行和第二行删除echo,不要在echo

之前添加print_rheader('location:.....');语句

答案 3 :(得分:1)

所有php工作都应在将任何数据发送到浏览器之前完成。 如果您使用自己的代码,则应以这种方式编写代码

<?php 
include "action/home.php"; //don't echo anything here
include "view/home.php"; 
?>

OR

如果您必须在设置标题信息后重定向,则应使用javascript函数重定向为

if(mysql_num_rows($res)>0)
{ ?>
  <script type="text/javascript">
  window.location="home.php";
  <script>
<?
}

答案 4 :(得分:1)

当我们使用多个时间标头位置时,此错误主要发生, 要避免此错误,您必须使用其他函数而不是header('location:home.php') 这是不同的功能。

<meta http-equiv='Refresh' content='0; url=home.php'>

header('location:index.php')相同 替换为<meta http-equiv='Refresh' content='0; url=index.php'>

答案 5 :(得分:0)

一旦某些内容输出到浏览器,您就无法使用header(),您已回显$_REQUEST['uname'];$_REQUEST['pass'];,这就是您的代码爆发的原因。

您有两种可能的解决方案: 要么删除那些echoes或 使用ob_start()