學了那麼久的php,今天我們就來了解關於PHP提示Notice: Undefined index解決方法,可能你還不了解什麼意思,但是我相信當你看完這篇文章,你一定會有新的收穫!
php提示Notice: Undefined index問題,Undefined index:是指你的程式碼裡存在:「變數還未定義、賦值就使用」的錯誤,這個不是致命錯誤,不會讓你的php程式碼執行強行中止,但是有潛在的出問題的危險…
在讀取資料時出現:
Notice: Undefined index: name in …
#Notice: Undefined index: key in…
原始碼如下:
name = isset ( name = isset(name=isset(_POST[‘name’]) ? filter_input(INPUT_POST, ‘name’, FILTER_SANITIZE_SPECIAL_CHARS) :htmlspecialchars($_GET[‘name’]); key = isset ( key = isset(key=isset(_POST[‘key’]) ? filter_input(INPUT_POST,‘key’,FILTER_SANITIZE_SPECIAL_CHARS) :htmlspecialchars($_GET[‘key’]);
問題分析:
##Undefined index:是指你的程式碼裡面存在:「變數還未定義、賦值就使用」的錯誤,這個不是致命錯誤,不會讓你的php程式碼運行強行中止,但是有潛在的出問題的危險,因此建議修改~~~~解決方法:
用php.ini中error_reporting = E_ALL & ~E_NOTICE 可以關閉notice的顯示,屏蔽掉此類警告好,不過,建議還是改代碼更好一點,程式碼總是寫的規範一點好,將來可以少出問題。問題原因:是因為你只檢查P O S T 是 否 存 在 , 卻 沒 檢 查 _POST是否存在,卻沒檢查POST是否存在,卻沒檢查_GET的存在 。
完美的解決方法:修改為下面所示即可:
n a m e = i s s e t ( name = isset(name=isset(_POST[‘name’]) ? filter_input(INPUT_POST,‘name’,FILTER_SANITIZE_SPECIAL_CHARS) : isset($_GET[‘name’]) ? filter_input(INPUT_POST,‘name’,FILTER_SANITIZE_SPECIAL_CHARS) : ‘’; k e y = i s s e t ( key = isset(key=isset(_POST[‘key’]) ? filter_input(INPUT_POST,‘key’,FILTER_SANITIZE_SPECIAL_CHARS) : isset($_GET[‘key’]) ? filter_input(INPUT_POST,‘key’,FILTER_SANITIZE_SPECIAL_CHARS) : ‘’;#首先,這個不是錯誤,是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="";推薦學習:《
PHP影片教學》
以上是一起了解Undefined index得解決方法(精選)的詳細內容。更多資訊請關注PHP中文網其他相關文章!