login.php<html>
<title>
登陆界面
</title>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
</head>
<body>
<form action="loginController.php" method="post">
<table>
<tr><td>用户名:</td><td><input type="text" name="username"/></td></tr>
<tr><td>密码:</td><td><input type="text" name="password"/></td></tr>
<tr><td><input type="submit" value="登陆"/><td><input type="reset" name="重新填写"/></td></tr>
</table>
</form>
</body>
</html>loginController.php
<html>
<title>
验证控制器
</title>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
</head>
<body>
<?php
$username=$_REQUEST['username'];
$password=$_REQUEST['password'];
if($username=='123'&&$password=='123'){
header("location:Manage.php");
exit();
} else{
  echo '账号密码有误';
}
?>
</body>
</html><html>
<title>
管理界面
</title>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
</head>
<body>
<h1>欢迎管理员</h1>
</body>
</html>输入用户名密码123
错误提示如下:
Warning: Cannot modify header information - headers already sent by (output started at C:\wamp\www\sqlInjcetion\loginController.php:9) in C:\wamp\www\sqlInjcetion\loginController.php on line 13求解!
另外3个php文件都是utf-8编码

解决方案 »

  1.   

    把缓冲区打开吧或者header("location:Manage.php");
    放到输出数据之前
      

  2.   

    采用js跳转或者将header前面的html代码删掉
      

  3.   

    请问一下,我header前面没有输出呀!
      

  4.   


    我删除了前面的HTML代码。现在代码如下:<?php
    $username=$_REQUEST['username'];
    $password=$_REQUEST['password'];
    if($username=='123'&&$password=='123'){
    header("location:manage.php");
    exit();
    } else{
      echo '账号密码有误';
    }
    ?>
    还是提示这个 错误!
      

  5.   

    <?php 顶格写了没有。前面是否有空行。
      

  6.   

    你那么多html代码就是输出了
    搜索下php缓冲区 header
    这个问题的解释还是很多的呀.............header("location:manage.php")
    也可以换成
    eacho "<script>window.location.href='manage.php'</script>";
      

  7.   

    根据http原理(注意跟php没啥关系)
    http头必须先于http实体输出
    所以
    从你的.php文件输出了第一个非<?php的内容开始,就已经输出了http响应实体
    此时再输出http响应头则无济于事,werbserver也做不了这个事情了。
      

  8.   

    补充一句,header本身就是修改http响应头,重定向location:只是一种的一种用法(实际被加上了302响应码)