全方位解疑PHP應(yīng)用問題
PHP語言的功能非常強(qiáng)大,可以幫助我們解決很多問題。但是在實(shí)際應(yīng)用中,它并不是沒有缺陷的。我們?cè)谶@里就向大家詳細(xì)介紹有關(guān)PHP應(yīng)用問題的相關(guān)解決辦法。#t#
謹(jǐn)慎使用==比較運(yùn)算符,因?yàn)镻HP是無類型的,但底層的C實(shí)現(xiàn)引擎是有類型的。最終都有類型轉(zhuǎn)換,比如0==”abc”結(jié)果是true,這可能不是我們想要的
在語義上是某種明確類型的地方都要使用相關(guān)函數(shù)明確轉(zhuǎn)換一下:intval。。。
在一個(gè)地方統(tǒng)一定義PHP的文件包含路徑,這樣在項(xiàng)目的各個(gè)地方包含文件的時(shí)候不要帶上路徑,只要文件名就行了,便于文件的轉(zhuǎn)移
PHP應(yīng)用問題還有一個(gè)就是不要直接在函數(shù),類方法中使用PHP的全局變量,而應(yīng)該是提供一個(gè)單獨(dú)訪問全局變量的代理,可以是對(duì)象,也可以只是一個(gè)簡(jiǎn)單的函數(shù),如果是在類中訪問全局變量,修改為使用代理全局變量的對(duì)象,這樣兩個(gè)對(duì)象之間有明確的依賴關(guān)系,不要在函數(shù)內(nèi)部直接使用全局變量或者global 外面的變量,一個(gè)函數(shù)只應(yīng)該使用函數(shù)參數(shù)傳遞進(jìn)來的數(shù)據(jù)。自己盡量不要使用全局的變量然后到處global, 注意表單的重復(fù)提交。這可以采用令牌。
決定系統(tǒng)是單入口還是多入口
注意編碼:文件存儲(chǔ)編碼,頁面編碼,數(shù)據(jù)庫編碼,用戶的操作系統(tǒng)編碼(用戶直接在地址上輸入內(nèi)容時(shí)FF,Opera會(huì)把內(nèi)容根據(jù)操作系統(tǒng)的編碼urlencode編碼,而IE6原樣)
不要暴露文件的路徑
提交請(qǐng)求后用戶關(guān)掉瀏覽器或者點(diǎn)擊瀏覽器的停止或者其它原因網(wǎng)絡(luò)斷掉后PHP是要繼續(xù)處理還是停止處理,PHP如何知道以上情況:connection-handling(ignore_user_abort,register_shutdown_function,connection_status…)
時(shí)區(qū)問題,如果應(yīng)用是分布式的話
explode應(yīng)用在一個(gè)空值上將產(chǎn)生一個(gè)包含1項(xiàng)內(nèi)容的數(shù)組:array(”"),但后者不是為false。也就是:null是假值,但explode(’,',null)后是真值,所以要小心if(explode(’,',$var))這種條件
$var = null;isset($var)結(jié)果為false。
PHP應(yīng)用問題之安全問題
驗(yàn)證輸入,不要相信來自用戶的數(shù)據(jù)(GET,POST,COOKIE),對(duì)于一個(gè)PHP應(yīng)用,應(yīng)該統(tǒng)一的對(duì)這些數(shù)據(jù)進(jìn)行過濾處理,比如編碼html標(biāo)簽防止XSS,防止sql注入。
同時(shí)對(duì)于需要驗(yàn)證的內(nèi)容,PHP要在驗(yàn)證一次,因?yàn)榭蛻舳说母鞣N驗(yàn)證都可以很容易的跳過(偽表單,禁用js及firebug這些可以隨便修改html的工具)。
要注意用戶提交的數(shù)據(jù)大小。比如post數(shù)據(jù)或者get數(shù)據(jù)太大可能會(huì)有緩沖溢出問題
小心服務(wù)器的非PHP文件。如果應(yīng)用可以上傳或者下載文件,要避免直接通過文件名讀取文件而文件名是用戶提供的情況,可能用戶會(huì)提供一些自己不該看到的文件,但PHP程序卻讀出來了。同時(shí)不要在返回的html中顯示文件路徑,文件的保存路徑不應(yīng)讓用戶看到,用戶可能會(huì)根據(jù)這些路徑猜出其它自己不該看到的文件
如果會(huì)話是保存在文件中的,并且web服務(wù)器上還有其它未知的用戶(比如出租的web主機(jī)),應(yīng)該修改會(huì)話文件的保存位置,或者把會(huì)話通過PHP的會(huì)話handler寫到數(shù)據(jù)庫中,因?yàn)闀?huì)話默認(rèn)保存在臨時(shí)目錄中,其它人可以訪問到,如果會(huì)話中保存了密碼之類的信息就很危險(xiǎn)。
以上就是PHP應(yīng)用問題的相關(guān)解決辦法。