摘要:現(xiàn)在我們總結(jié)一下,有可能會遇到的一些中的一些陷阱。陷阱二判斷數(shù)組里是否存在用戶所提交的用戶小明湯姆奧立升輸出結(jié)果,此結(jié)果明顯錯誤我發(fā)現(xiàn)這個問題,是因為網(wǎng)站被注入了,還好,那么時候在測試的時候發(fā)現(xiàn)的,沒有造成嚴重的后果。
在做開發(fā)的時候,有可能會忘記掉一些技術(shù)細節(jié)。這些細節(jié)有可能會造成很嚴重的后果,比如網(wǎng)站被注入、網(wǎng)站崩潰等等。現(xiàn)在我們總結(jié)一下,有可能會遇到的一些 PHP 中的一些 “陷阱”。
陷阱一:empty()最新的官網(wǎng)手冊對此有特別說明:
Note: 在 PHP 5.5 之前,empty() 僅支持變量;任何其他東西將會導(dǎo)致一個解析錯誤。 換言之,下列代碼不會生效: empty(trim($name))。 作為替代,應(yīng)該使用trim($name) == false.我最近一次遇到該錯誤,是使用 Phalcon 開發(fā)的時候,服務(wù)器一直報 503 錯誤,剛開始會覺得莫名其妙,通過逐行排除,才發(fā)生由于 empty 的錯誤用法導(dǎo)致的。當(dāng)然,自從 PHP 5.5 開始,empty 已經(jīng)支持這種寫法了。
陷阱二:in_array()"小明", 1092 => "湯姆", 1256 => "奧立升" ]; if(in_array($post_dirty_id, array_keys($safe_arr))) { echo "find me"; } else { echo "do not find me"; } //輸出結(jié)果:find me,此結(jié)果明顯錯誤我發(fā)現(xiàn)這個問題,是因為網(wǎng)站被 SQL 注入了,還好,那么時候在測試的時候發(fā)現(xiàn)的,沒有造成嚴重的后果。
關(guān)于 in_array() 函數(shù)使用,還有其他值得我們注意的地方,PHP 手冊中,有大量的網(wǎng)友提供的示例,來說明該函數(shù)的“怪異”行為,比如:
"y"]; var_dump(in_array(25, $a)); // true, one would expect false var_dump(in_array("ggg", $a)); // true, one would expect false var_dump(in_array(0, $a)); // true var_dump(in_array(null, $a)); // false為了安全起見,建議可以采用下面這種方式進行判斷:
"小明", 1092 => "湯姆", 1256 => "奧立升" ]; if(isset($safe_arr[$post_dirty_id])) { echo "find me"; } else { echo "do not find me"; } //輸出結(jié)果:do not find me,這是正確的結(jié)果如果遇到其他的問題,我都會在這里記錄...
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/21351.html
摘要:主要講述了中關(guān)于變量聲明和代碼編寫時你可能沒它留意的一些坑。但是換行符并不會被忽略,換行符起到了分號的功能。需要注意的是,大小寫敏感,和是兩個不同的變量。保留字中有一批稱為保留字的家伙是不能用做變量的,用了在一些瀏覽器中很可能會報錯。 今天翻譯的這篇文章依舊比較基礎(chǔ),是這個系列文章的第三篇。主要講述了JavaScript中關(guān)于變量聲明和代碼編寫時你可能沒它留意的一些坑。 那些熟悉PHP...
陷進到處都是啊!本篇文章就說說Hooks使用時存在所謂的閉包陷阱,看看下面代碼: functionChat(){ const[text,setText]=useState(''); constonClick=useCallback(()=>{ sendMessage(text); },[]); return<SendButtononClick=...
摘要:舉例說明百度谷歌正則如下結(jié)果是把全部的字符串都匹配到了其實,我們只需要加上修飾符,這樣,這樣一旦成功匹配一次的話,正則就不會繼續(xù)進行匹配了個人認為應(yīng)該是的意思,表示在匹配的時候忽略大小寫。 最近在學(xué)習(xí)正則表達式,發(fā)現(xiàn)原來理解的正則表達式不是特別的準(zhǔn)確,甚至有誤!在這里簡單記錄一下,希望對有的朋友能夠有所幫助! ①[]:字符集(字符簇,字符組……) 他的真正含義是或的意思!例如:[123...
摘要:通過對這些底層內(nèi)置對象的代理陷阱和反射函數(shù),讓開發(fā)者能進一步接近引擎的能力。顯然,與要求代理目標(biāo)對象必須是一個函數(shù),這兩個代理陷阱在函數(shù)的執(zhí)行方式上開啟了很多的可能性,結(jié)合使用就可以完全控制任意的代理目標(biāo)函數(shù)的行為。 代理(Proxy)可以攔截并改變 JS 引擎的底層操作,如數(shù)據(jù)讀取、屬性定義、函數(shù)構(gòu)造等一系列操作。ES6 通過對這些底層內(nèi)置對象的代理陷阱和反射函數(shù),讓開發(fā)者能進一步接...
摘要:在的官方手冊中寫道支持風(fēng)格的前后遞增與遞減運算符。第一個注意事遞增遞減運算符不影響布爾值。遞增遞減布爾值遞增遞減在處理字符變量的算數(shù)運算時,沿襲了的習(xí)慣,而非的。還有一個注意事項遞增遞減其他字符變量則無效,原字符串沒有變化。 在 PHP 的官方手冊中寫道: PHP 支持 C 風(fēng)格的前/后遞增與遞減運算符。 第一個注意事:遞增/遞減運算符不影響布爾值。遞減 NULL 值也沒有...
閱讀 2317·2021-11-24 09:39
閱讀 3045·2021-10-15 09:39
閱讀 3101·2021-07-26 23:38
閱讀 2298·2019-08-30 11:14
閱讀 3417·2019-08-29 16:39
閱讀 1719·2019-08-29 15:23
閱讀 788·2019-08-29 13:01
閱讀 2672·2019-08-29 12:29