0
<?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... 即使用户名和密码是正确的,它也没有重定向到另一个页面并给出这个警告..为什么会出现这个错误?

4

6 回答 6

1

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

消除回声,它应该可以工作。此外,将分号放在这些标头函数的末尾。

于 2012-12-12T04:00:17.010 回答
1

将任何输出发送到浏览器后,您无法发送标头。您在前两行中执行此操作。您可以使用输出缓冲来解决此问题。

于 2012-12-12T04:00:25.657 回答
1

从代码的第一行和第二行中删除echo,不要在之前放置echoprint_r声明header('location:.....');

于 2012-12-12T04:01:41.743 回答
1

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

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

或者

如果您必须在设置了标头信息后进行重定向,您应该使用 javascript 函数重定向为

if(mysql_num_rows($res)>0)
{ ?>
  <script type="text/javascript">
  window.location="home.php";
  <script>
<?
}
于 2012-12-12T04:13:01.967 回答
1

这个错误主要是当我们使用很多时间头位置时出现的,为了避免这个错误,你必须使用另一个函数而不是header('location:home.php') Here is different function。

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

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

于 2012-12-12T07:20:49.387 回答
0

header()一旦有东西输出到浏览器,你就不能使用,你已经回显了$_REQUEST['uname'];$_REQUEST['pass'];这就是你的代码爆发的原因。

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

于 2012-12-12T06:08:34.440 回答