天天看點

Notice:Undefined index:submit in問題

判斷IF($_POST['submit']){ }報錯Notice:Undefined index:submit in解決方法:

1.将條件語句改為if(isset($_POST['submit']) && $_POST['submit']).

2.修改一下php.ini,搜尋error_reporting,原值為:E_ALL,把它修改成E_ALL & ~E_NOTICE就行了,然後重新開機apache.

PHP中error_reporting()用法詳解

1 E_ERROR 緻命的運作時錯誤。 錯誤無法恢複過來。腳本的執行被暫停

2 E_WARNING 非緻命的運作時錯誤。 腳本的執行不會停止

4 E_PARSE 編譯時解析錯誤。解析錯誤應該隻由分析器生成

8 E_NOTICE 運作時間的通知。

16 E_CORE_ERROR 在PHP啟動時的緻命錯誤。這就好比一個在PHP核心的E_ERROR

32 E_CORE_WARNING 在PHP啟動時的非緻命的錯誤。這就好比一個在PHP核心E_WARNING警告

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

128 E_COMPILE_WARNING 非緻命的編譯時錯誤,由Zend腳本引擎生成了一個E_WARNING警告

256 E_USER_ERROR 緻命的使用者生成的錯誤。

512 E_USER_WARNING 非緻命的使用者生成的警告。

1024 E_USER_NOTICE 使用者生成的通知。

2048 E_STRICT 運作時間的通知。

4096   E_RECOVERABLE_ERROR 捕捉緻命的錯誤。

        8191   E_ALL來     所有的錯誤和警告。
        好像php預設是不開啟錯誤的,是以你需要配置php.ini檔案:           

将 display_errors = Off 改為display_errors = On

另外還要配置錯誤級别:将

error_reporting = E_ALL 改為:

error_reporting = E_ALL & ~E_NOTICE

應為php預設是顯示所有錯誤的,而有些無害的提示我們不需要顯示,是以設定如上!

也可以在php代碼運用如下:

<?php

//禁用錯誤報告,也就是不顯示錯誤

error_reporting(0);

//報告運作時錯誤

error_reporting(E_ERROR | E_WARNING | E_PARSE);

//報告所有錯誤

error_reporting(E_ALL);

?>

使用示例:

今天學習CI架構過程中遇到個問題:

A PHP Error was encountered

Severity: Notice

Message: Undefined variable: user            

一般在預設的普通PHP檔案中輸出一個未定義聲明的變量是不會報錯誤的,但在codeigniter架構下卻要報錯誤,這對于想內建 添加 和 修改 頁面于一體的”懶人”很不友善,由于是初學者開始還想怎麼在代碼中屏蔽這一錯誤提示呢.甚至用到了@,但聽很多人都說@會大大降低性能….

最後突然想到,是不是codeigniter有意讓這錯誤資訊提示出來了呢,我們該如何去屏蔽掉這一類錯誤呢無意中搜尋到了”如何讓codeigniter不顯示Notice資訊?”,茅塞頓開.原來是入口index.php中的error_reporting(E_ALL);在作怪.隻需要把它改成

  error_reporting(E_ALL ^ E_NOTICE);

就可以屏蔽掉這個錯誤,而不影響其他的報錯.

我們在程式中可能經常看到這麼一個函數

function setErrorReporting()
                {
                    //從配置檔案讀取目前是否為開發環境
                    if (DEV_ENV == true) {
                        ini_set("error_reprorting", "E_ALL & ~E_NOTICE");
                        ini_set("display_errors", "on");
                    } else {
                        error_reporting(E_ALL);
                        ini_set('display_errors', 'Off');
                        ini_set("log_errors" , "On");
                        ini_set('error_log', '/var/log/phperror.log');
                    }
                }           

舉例說明:

在Windows環境下:原本在php4.3.0中運作正常的程式,在4.3.1中為何多處報錯,大體提示為:Notice:Undefined varialbe:變量名稱.

例如有如下的代碼:
                         代碼如下 複制代碼
                        if (!$tmp_i) {
                        $tmp_i=10;
                        }           

繼續閱讀