鍍金池/ 問答/PHP  網(wǎng)絡(luò)安全/ set_error_handler 錯(cuò)誤攔截是否假設(shè)有 @ 則不報(bào)?

set_error_handler 錯(cuò)誤攔截是否假設(shè)有 @ 則不報(bào)?

clipboard.png

有些錯(cuò)誤是

Undefined index: password

類似這種
我已經(jīng)加上 @不用報(bào)錯(cuò)
但是在 set_error_handler 還是會(huì)報(bào)錯(cuò)....
能不能略過有 @ 的?

回答
編輯回答
拮據(jù)

錯(cuò)誤都是有意義的。

比如這個(gè)Undefined index,80%的情況是,有個(gè)參數(shù)沒傳進(jìn)來,不在$_GET或者相應(yīng)的數(shù)組里,引用個(gè)數(shù)組不存在的東西當(dāng)然就要報(bào)錯(cuò)咯。但你不能為了不想看到就關(guān)掉它,這樣當(dāng)你想debug時(shí),打開error.log一看,干干凈凈,所有應(yīng)該發(fā)生問題的地方全被@給懟掉了,咋辦?到時(shí)候只能繞更大的彎。

說回這個(gè)問題。其實(shí)解決很簡單的,比如你要取個(gè)$_GET['id'],有沒有你可以先去判斷下,既然它是數(shù)組,那么肯定有方法檢測這個(gè)鍵名是否存在咯,或者是一個(gè)固定的寫法、或者是API,肯定有方法的,那么PHP里就可以用array_key_exists方法先去做個(gè)判斷,如果有再取值,沒有給它丟個(gè)空字符串或者其它什么標(biāo)識就好了呀!比如:

$userid = array_key_exists('id', $_GET) ? $_GET['id'] : '';
2017年12月6日 14:34