天天看點

***PHP Notice: Undefined index: ..問題的解決方法

 首先,這個不是錯誤,是warning。是以如果伺服器不能改,每個變量使用前應當先定義。

    方法1:伺服器配置修改 

    修改php.ini配置檔案,error_reporting = E_ALL & ~E_NOTICE

    方法2:對變量進行初始化,規範書寫(比較煩瑣,因為有大量的變量)。但還沒有找到好定義方法,望大家指教

    方法3:每個檔案頭部加上:error_reporting(0); 如果不行,隻有打開php.ini,找到display_errors,設定為display_errors = Off。以後任何錯誤都不會提示。

    方法4 :做判斷:isset($_GET["page"])      if-else判斷

    或者加上''@''表示這行如果有錯誤或是警告不要輸出

    如:@$page=$_GET["page"]

    方法5:file1.php檔案把$xx變量付一個值,用post傳遞給file2.php,

    如果file2.php沒有$xx的定義,而直接使用$yy=$xx; 系統就會報錯:"undifined variaable $xx", 如果file2.php的檔案開始用$xx="";定義,那麼file1.php的$xx值就傳不過來了!

    file2.php裡可以這樣

    if(!isset($xx)) $xx="";

​定義和用法:​

​error_reporting() 設定 PHP 的報錯級别并傳回目前級别。​

​函數文法:​

​error_reporting(report_level)​

​如果參數 level 未指定,目前報錯級别将被傳回。下面幾項是 level 可能的值:​

​值 常量 描述​

​1 E_ERROR 緻命的運作錯誤。錯誤無法恢複,暫停執行腳本。​

​2 E_WARNING 運作時警告(非緻命性錯誤)。非緻命的運作錯誤,腳本執行不會停止。​

​4 E_PARSE 編譯時解析錯誤。解析錯誤隻由分析器産生。​

​8 E_NOTICE 運作時提醒(這些經常是你代碼中的bug引起的,也可能是有意的行為造成的。)​

​16 E_CORE_ERROR PHP啟動時初始化過程中的緻命錯誤。​

​32 E_CORE_WARNING PHP啟動時初始化過程中的警告(非緻命性錯)。​

​64 E_COMPILE_ERROR 編譯時緻命性錯。這就像由Zend腳本引擎生成了一個E_ERROR。​

​128 E_COMPILE_WARNING 編譯時警告(非緻命性錯)。這就像由Zend腳本引擎生成了一個E_WARNING警告。​

​256 E_USER_ERROR 使用者自定義的錯誤消息。這就像由使用PHP函數trigger_error(程式員設定E_ERROR)​

​512 E_USER_WARNING 使用者自定義的警告消息。這就像由使用PHP函數trigger_error(程式員設定的一個E_WARNING警告)​

​1024 E_USER_NOTICE 使用者自定義的提醒消息。這就像一個由使用PHP函數trigger_error(程式員一個E_NOTICE集)​

​2048 E_STRICT 編碼标準化警告。允許PHP建議如何修改代碼以確定最佳的互操作性向前相容性。​

​4096 E_RECOVERABLE_ERROR 開捕緻命錯誤。這就像一個E_ERROR,但可以通過使用者定義的處理捕獲(又見set_error_handler())​

​8191 E_ALL 所有的錯誤和警告(不包括 E_STRICT) (E_STRICT will be part of E_ALL as of PHP 6.0)​

例子:

任意數目的以上選項都可以用“或”來連接配接(用 OR 或 |),這樣可以報告所有需要的各級别錯誤。

例如,下面的代碼關閉了使用者自定義的錯誤和警告,執行了某些操作,然後恢複到原始的報錯級别:

​<?php​

​//禁用錯誤報告​

​error_reporting​

​​

​(0);​

​//報告運作時錯誤​

​error_reporting​

​(E_ERROR | E_WARNING | E_PARSE);​

​//報告所有錯誤​

​error_reporting​

​(E_ALL);​

​?>​