<?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...
即使用户名和密码是正确的,它不会重定向到另一个页面并发出此警告..
为什么会出现这个错误?
答案 0 :(得分:1)
在将数据回显到页面后,您无法进行PHP标头重定向。
取出回声,它应该有效。另外,在这些标题函数的末尾加上分号。
答案 1 :(得分:1)
将任何输出发送到浏览器后,您无法发送标头。你在前两行做到了这一点。您可以使用output buffering解决此问题。
答案 2 :(得分:1)
从代码的第一行和第二行删除echo
,不要在echo
print_r
或header('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()