0

运行代码时仍然出现该错误。这是我的代码。我也删除了所有空格。我的 html 表单转到我的 php (action="lib/login.php") 文件以检查用户是否存在。如果存在,则重定向。dbconnect.php 只是连接到我的数据库。谁能帮忙?

文件夹布局:
lib
-dbconnect.php
-login.php(代码位于下方)
index.html

<?php
 require_once("dbconnect.php"); 

 $loginuser = $_POST['username'];
 $loginpw = $_POST['password']; 
 $usertable = "Users";
 $users="Username";
 $pw="Password";
 $query = "SELECT $users, $pw FROM $usertable WHERE $users='$loginuser' AND $pw='$loginpw'";           
 $result = mysql_query($query);
 $num_rows = mysql_num_rows($result);                                  
 if (!$result) {
    die('Invalid query: ' . mysql_error());
}

 if ($num_rows>0) {
    header("Location:../index.html");
    exit();       
}                                      

?>

4

1 回答 1

0

如果您在完成某些输出后尝试发送 HTTP 标头,则会出现此消息。这是因为在 HTTP 中,首先出现的是标头,然后是正文。随着输出进入正文,输出后无法再发送标头。

由于您的代码中没有使用或使用任何输出函数,因此可以通过以下方式生成echo输出print

  1. PHP 错误信息
  2. 开场前的内容<?php

到 1:

ob_*组函数是捕获所有输出脚本的好方法,无论这是错误消息还是常规输出。因此,您可以添加以下行:

ob_start();

直接在开始<?php标签之后。

然后在调用之前header()添加:

if(ob_get_size() > 0) {
    // there was an error, display it and exit
    ob_end_flush();
    die();
}

请注意,在生产环境中,您应该完全禁用错误消息的显示,因为它们可能包含敏感信息。您可以通过将 php.ini 中的 display_errors 设置为 0 或按脚本执行以下操作:

ini_set('display_errors', 0);

至 2:

假设您发布的代码是 php 文件的完整内容(之前没有空格或空行<?php),则可能是您的 UTF-8 BOM 字符有问题。BOM 表示字节顺序标记,内部使用 utf-8 编码。它在文本编辑器中不可见。:)

要删除它,有几种解决方案......将为您搜索一个...... http://www.w3.org/International/questions/qa-byte-order-mark.en.php

于 2013-03-06T21:33:49.900 回答