“警告:不能修改标题信息 - 已经发送的标题”错误,在php

问题描述:

中没有空格当我运行我的代码时,我仍然收到该错误。这里是我的code.I删除所有的空格以及我的HTML形式去我的PHP(动作=“lib/login.php”)文件来检查用户是否存在。如果存在,则重定向。 dbconnect.php只是连接到我的数据库。谁能帮忙?“警告:不能修改标题信息 - 已经发送的标题”错误,在php

FOLDER布局:?
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();  
}          

>

+1

欢迎堆栈溢出!请不要使用'mysql_ *'函数来编写新的代码。他们不再被维护,社区已经开始[弃用流程](http://news.php.net/php.internals/53799)。看到[红色框](http://uk.php.net/manual/en/function.mysql-connect.php)?相反,您应该了解[准备好的陈述](http://en.wikipedia.org/wiki/Prepared_statement)并使用[PDO](http://php.net/pdo)或[MySQLi](http:// php.net/mysqli)。如果你选择PDO [这里是一个很好的教程](http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers)。 – War10ck 2013-03-06 21:28:15

+1

由什么发送?该错误确切地告诉你问题出在哪里。 – 2013-03-06 21:28:57

+0

检查用户名和密码是否真的被张贴。如果它们不是,当你尝试从'$ _POST'中抓取它们时,PHP可能会发出一个错误,从而导致内容在标题之前被输出。 – bfavaretto 2013-03-06 21:29:02

出现该消息,如果你尝试发送一个HTTP头后,你已经做出了一些输出。这是因为在HTTP中首先是标题,然后是正文。随着输出进入正文,输出后不再发送标题。

由于没有在代码中使用没有echoprint或任何输出功能,可以通过

  1. 甲PHP errror消息来生成的输出
  2. 开幕前
  3. 内容<?php

To 1:

功能集ob_*是捕获所有输出脚本的好方法,无论这是错误消息还是常规输出。所以你可以加行:

ob_start(); 

直接打开后<?php标签。

然后调用header()加前:

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

注意,在生产环境中,你应该在所有禁用错误消息的显示,因为它们可能包含敏感信息。您可以通过设置做的display_errors在php.ini为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