【问题标题】:Cannot modify header information - headers already sent [duplicate]无法修改标头信息 - 标头已发送 [重复]
【发布时间】:2013-02-17 14:06:09
【问题描述】:

亲爱的朋友们,我遇到了无法解决的奇怪错误,需要您的帮助。当登录不正确并且登录正确时,代码工作正常,它仍然会创建一个会话,但不会重定向到 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>

朋友们能找到我做错的地方并帮我改正吗。 谢谢

【问题讨论】:

  • 这个错误确实很奇怪。它已经被回答了 1000 次,尽管右栏中的所有答案都在 ---&gt;

标签: php session login header mysqli


【解决方案1】:

你必须了解 HTTP:

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

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

这是不可能的。

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-09
      • 2012-06-19
      • 1970-01-01
      • 2011-01-15
      • 1970-01-01
      • 2012-10-10
      相关资源
      最近更新 更多