新聞資訊

你(nǐ)不(bù)了(le)解PHP的(de)10件(jiàn)事(shì)情

1.使用(yòng)ip2long()和(hé)long2ip()函數(shù)來(lái)把IP地(dì)址轉化(huà)成整型存儲到(dào)數(shù)據庫裡(l≤ǐ)。這(zhè)種方法把存儲空(kōng)間(jiān)降到(dào)了(le)接近(jìn)四分(fēn)之一(yī)(char(15®)的(de)15個(gè)字節對(duì)整形的(de)4個(gè)字節),計(jì)算(suàn)一(yī)個(gè)特定的(de)地(dì)址是(shì)不(bù)是(shì∏)在一(yī)個(gè)區(qū)段內(nèi)頁更簡單了(le),而且加快(kuài)了(le)搜索和(hé)排序的(de)速度(雖然有(yǒu)時(shí)僅僅是(shì)快(kuài)♥了(le)一(yī)點)。
2.在驗證email地(dì)址的(de)時(shí)候使用(yòng)checkdnsrr()函數(shù)驗證域名是(shì)否存在。這(zhè)個(gè)內(nèi)置☆函數(shù)能(néng)夠确認指定的(de)域名能(néng)夠解析成IP地(dì)址。該函數(shù)的(de)P HP文(wén)檔的(de)用(yòng)戶評論部分(fēn)有(yǒu)一(yī)個(gè)簡單的(de)用(πyòng)戶自(zì)定義函數(shù),這(zhè)個(gè)函數(shù)基于checkdnsrr(),用(yòng)來(lái)驗證e→mail地(dì)址的(de)合法性。對(duì)于那(nà)些(xiē)認為(wèi)自(zì)己的(de)email地(dì)址是(shì)“jo♠euser@wwwphp.net”而不(bù)是(shì)“joeuser@php.net”的(de)家(jiā)夥≤們,這(zhè)個(gè)方法可(kě)以很(hěn)方便的(de)抓住他(tā)們。
3.如(rú)果你(nǐ)使用(yòng)的(de)是(shì)PHP5和(hé)MySQL4.1或者更高(gāo)的(de)版本,考慮抛棄mysql_γ*系列函數(shù)改用(yòng)改進版的(de)mysqli_*系列函數(shù)。一(yī)個€(gè)很(hěn)好(hǎo)的(de)功能(néng)就(jiù)是(shì)你(nǐ)可(kě )以使用(yòng)預處理(lǐ)語句,如(rú)果你(nǐ)在維護一(yī)個(gè)數(shù)據庫密集型站(zhàn)點,這(zhè)個(gè)功能(néng)能™(néng)夠加快(kuài)查詢速度。一(yī)些(xiē)評估分(fēn)數(shù)。
4.學會(huì)愛(ài)上(shàng)三元運算(suàn)符。
5.如(rú)果你(nǐ)在項目中感覺到(dào)有(yǒu)可(kě)複用(yòng)的(de)部分(fēn),在你(nǐ)寫下(≈xià)一(yī)行(xíng)代碼前先看(kàn)看(kàn)PEAR中是(shì)否已經有(yǒu)了(le)。很(hěn)多(∞duō)PHP程序員(yuán)都(dōu)知(zhī)道(dào)PEAR是(shì)一(yī)個£(gè)很(hěn)好(hǎo)的(de)資源庫,雖然還(hái)有(yǒu)很(hěn)多(duō)程序員(yuán)不(bù)知(zhī)道(dào)。這(zhè)個(gè)在線資源庫包含₩了(le)超過400個(gè)可(kě)以複用(yòng)的(de)程序片段,這(zhè)些(xiē)程序片段你(nǐ)可(kě)以立即用(yòng)刀(dāo)你(nǐ)的‌(de)程序裡(lǐ)。除非說(shuō)你(nǐ)的(de)項目真的(de)是(shì)非常特别的(de),你(nǐ)總能(néng)找到(dào)幫你(nǐ)節省時(₽shí)間(jiān)的(de)PEAR包。(參見(jiàn)PECL)
6.用(yòng)highlight_file()來(lái)自(zì)動的(de)打印出格式化(huà)的(de)很(hěn)漂亮'(liàng)的(de)源代碼。如(rú)果你(nǐ)在留言闆、IRC這(zhè)些(xiē)地(dì)方尋求一(yī)個(gè)腳本的(de)幫助的(d₽e)話(huà),這(zhè)個(gè)函數(shù)用(yòng)起來(lái)非常的(de)順手。當然了(le),要(yào)小(xiǎo)心不(bù)要(↓yào)意外(wài)的(de)洩露出你(nǐ)的(de)數(shù)據庫連接信息和(hé)密碼等。
7.使用(yòng)error_reporting(0)函數(shù)來(lái)防止用(yòng)戶看(kàn)到(dà€o)潛在的(de)敏感錯(cuò)誤信息。]在理(lǐ)想情況下(xià),發布服務器(qì)應該在php.ini裡(lǐ)£完全禁止。但(dàn)是(shì)如(rú)果你(nǐ)用(yòng)的(de)是(shì)一(yī)個(gè)共享的(de)web服務器(qì)的(de)話(huà),你(nǐ)沒有(yǒu)自↓(zì)己的(de)php.ini文(wén)件(jiàn),那(nà)麽這(zhè)種情況下(xià)你(n×ǐ)最好(hǎo)的(de)選擇就(jiù)是(shì)在所有(yǒu)腳本的(de)第一(yī)行(xíng)前加上(shàng)error_report↔ing(0);(或者使用(yòng)require_once()方法)。這(zhè)就(jiù)能(néng)夠在出錯(cuò)γ的(de)時(shí)候完全屏蔽敏感的(de)SQL查詢語句和(hé)路(lù)徑名。
8.在網數(shù)據庫中存儲很(hěn)大(dà)的(de)字符串之前使用(yòng)gzcompress()和(h✘é)gzuncompress()來(lái)顯式的(de)壓縮/解壓字符串。這(zhè)個(gè)PHP內(nèi)置函數(shù)使用(yòng)gzip算(suàn)法λ,可(kě)以壓縮普通(tōng)文(wén)本達90%。在我每次要(yào)讀(dú)寫BLOB類型的(de)字段的(de₽)時(shí)候都(dōu)使用(yòng)這(zhè)些(xiē)函數(shù)。唯一(yī)額例外(wài)就(jiù)∑是(shì)當我需要(yào)全文(wén)檢索的(de)時(shí)候。
9.通(tōng)過“引用(yòng)”傳遞參數(shù)的(de)方法從(cóng)一(yī)個(gè)函數(shù)中得(de)到(dà o)多(duō)個(gè)返回值。就(jiù)像三元運算(suàn)符一(yī)樣,大(dà)部分(fēn)受過正式編程訓練的(de)程序員(yuán)都(dō™u)知(zhī)道(dào)這(zhè)個(gè)技(jì)巧。但(dàn)是(shì)那(nà)些(xiē)HTML背景大(dà)于Pascal背景的(de)程序員(y↕uán)都(dōu)或多(duō)或少(shǎo)的(de)有(yǒu)過這(zhè)樣的(de)疑問(wèn)“在僅能(n×éng)使用(yòng)一(yī)次return的(de)情況下(xià),從(cóng)一(yī)個(gè)函數(shù)裡(lǐ)返回多(duō)個(gè)值?”答(dá)案就©(jiù)是(shì)在變量前加上(shàng)一(yī)個(gè)“&”符号,通(tōng)過“引用(yòng)”傳遞而非“值”傳遞。
10.完全理(lǐ)解“魔術(shù)引号”和(hé)SQL注入的(de)危險性。我希望閱讀(dú)到(dào)這(zhè)裡(lǐ)的(de)開(kāi)發者都(dōu)已經很(≈hěn)對(duì)SQL注入和(hé)了(le)解了(le)。不(bù)過我還(hái)是(shì)把這(zhè)條列在這(zhè)裡(lǐ),是(shì)因為(wèi)這(zhè)個(gè)确實 有(yǒu)點難以理(lǐ)解。如(rú)果你(nǐ)還(hái)沒有(yǒu)聽(tīng)說(shuō)過這(zhè)種說(shuō)法,那(nà)麽把今天剩下(xià)的(de)時(shí)∏間(jiān)都(dōu)用(yòng)來(lái)Google閱讀(dú)吧(ba)。