-1

亲爱的朋友,我遇到了无法解决的奇怪错误,需要您的帮助。当登录不正确并且登录正确时,代码工作正常,它仍然会创建一个会话,但不会重定向到 index.php,而是会引发错误“无法修改标头信息 - 标头已由...发送”。我已经搜索过类似的帖子,但无法解决问题

这是代码

<?php include ("scripts/connection.php");
session_start();
$myusername = $_POST["myusername"];
$myusername = preg_replace('/[^a-zA-Z0-9\']/','',$_POST['myusername']);
$mypassword = $_POST["mypassword"];
$mypassword = preg_replace('/[^a-zA-Z0-9\']/','',$_POST['mypassword']);
$LoginQuery = "SELECT * FROM users WHERE username='$myusername' and password='$mypassword'";
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Admin Login</title>
</head>
<body>
<table width="300" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
<tr><form name="form1" method="post">
<td>
<table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF">
<?php if($_SERVER["REQUEST_METHOD"] == "POST")
{ $result = $mysql->query($LoginQuery);
  if($result->num_rows ==1) 
{
$_SESSION['login_user']=$myusername;
header("Location:index.php");
exit();
}
else
{
echo '<tr><td width="78">&nbsp;</td><td width="6"></td><td width="294"><font style="color:#f00; font-weight:bold;">Invalid!</font></td></tr>';
}
}
?>
<tr>
<td colspan="3"><strong>Member Login </strong></td>
</tr>
<tr>
<td width="78">Username</td>
<td width="6">:</td>
<td width="294"><input name="myusername" type="text" id="myusername"></td>
</tr>
<tr>
<td>Password</td>
<td>:</td>
<td><input name="mypassword" type="text" id="mypassword"></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><input type="submit" name="Submit" value="Login"></td>
</tr>
</table>
</td>
</form>
</tr>
</table>
</body>
</html>

朋友们可以找到我做错了什么并帮助我纠正它。谢谢

4

2 回答 2

0

header您应该在编写任何其他文本之前使用函数

于 2013-02-17T14:08:57.943 回答
0

你必须了解 HTTP:

通过 HTTP-Header 实现重定向。在 HTTP 中,任何输出之前发送标头(例如网页本身)

因此,您在发送有效负载后尝试发送 Redirect-Header。

这是不可能的。

简而言之,在页面上打印出某些内容后,切勿使用 header()。

于 2013-02-17T14:09:53.073 回答