2013-03-06 69 views
0

中沒有空格當我運行我的代碼時,我仍然收到該錯誤。這裏是我的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

回答

0

出現該消息,如果你嘗試發送一個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

相關問題