2011-07-27 120 views
0

我創造了另一個服務器上的登錄表單,它非常完美,現在我把它轉移到另一臺服務器,並即時得到許多新的錯誤:PHP登錄表單問題

警告:不能更改頭信息 - 頭已經發出(輸出開始於/home/davethom/public_html/login.php:16)在/home/davethom/public_html/login.php在線55

但實際的登錄作品這條消息剛剛出現,它可能只是我愚蠢和缺少的東西,

www.scottechtrio.co.cc/login.html用戶名:1​​密碼:1

+0

你的'error_reporting();'在你最後的服務器上設置了什麼?將它設置爲'error_reporting(0);'爲零。 – Sparkup

+0

您還可以得到'Warning:extract()[function.extract]:第一個參數應該是價格更新中第65行的/home/davethom/public_html/priceupdate.php中的數組。 – Sparkup

+0

如何編輯服務器設置? – lewis

回答

4

在開始發送某些輸出後,您可能正在調用header()函數或另一個發送頭文件的函數,如setcookie()

這些功能之前的任何輸出發送到瀏覽器必須調用:

  • 任何echo/print完成之前,
  • 任何字符之前(包括空白字符)<?php ... ?>標籤
1

檢查代碼中的空白。刪除php頁面末尾的php結束標記(如果有的話)。

0
  1. 我想你需要關閉php.ini文件中的display_errors指令。
  2. 如果您不能編輯php.ini文件,請在所有php文件的頂部調用以下函數。

    ini_set('display_errors','Off');

您還可以在應用程序的webroot中使用.htaccess文件,其中包含以下內容。

php_flag display_errors  Off 
0

您不應該關閉錯誤報告;你應該修復你的代碼,以免造成任何錯誤。

正如Pascal MARTIN所述,當您調用一個在發送輸出到瀏覽器之後發送HTTP標頭的函數時,會發生此錯誤。 session_start()發送一個cookie頭,因此在輸出任何內容之前需要調用此頭文件(如header()和setcookie())。檢查/home/davethom/public_html/login.php中的第55行以查找違規函數,並確保在調用之前沒有內容發送到瀏覽器。

頁面內容是發送到瀏覽器以呈現給用戶的任何內容。這可能是你的開放標籤(或),甚至是一些錯誤的空白,無意中輸出到某個地方。尋找回聲或打印語句,或者不在一組分隔符內的任何東西(即使只是新的行或空格也是有問題的)。

作爲一種調試手段:爲了準確找出發生此錯誤時發送給瀏覽器的內容,請將die();緊接在第55行之後,訪問瀏覽器中的頁面,然後使用瀏覽器查看迄今爲止從服務器收到的源代碼。

有關錯誤地在內容後發送標頭的更多信息,請參閱http://uk.php.net/manual/en/function.header.php