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编码
------解决方案--------------------
<?php 顶格写了没有。前面是否有空行。
------解决方案--------------------
你那么多html代码就是输出了
搜索下php缓冲区 header
这个问题的解释还是很多的呀.............
header("location:manage.php")
也可以换成
eacho "<script>window.location.href='manage.php'</script>";
------解决方案--------------------
根据http原理(注意跟php没啥关系)
http头必须先于http实体输出
所以
从你的.php文件输出了第一个非<?php的内容开始,就已经输出了http响应实体
此时再输出http响应头则无济于事,werbserver也做不了这个事情了。
------解决方案--------------------
补充一句,header本身就是修改http响应头,重定向location:只是一种的一种用法(实际被加上了302响应码)
------解决方案--------------------
注意文件格式。bom头