新聞資訊

你(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è)特定的(d←¥ e)地(dì)址是(shì)不(bù)是(shì)在一(yī)個(gè)區(q↑±ū)段內(nèi)頁更簡單了(le),而​®γ‌且加快(kuài)了(le)搜索和(hé)排序的(de)±'速度(雖然有(yǒu)時(shí)僅僅是(s≠φ‍✔hì)快(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)PHP文(wén)檔的(de)用(yòng)戶​φ₹♦評論部分(fēn)有(yǒu)一(yī)€÷↕個(gè)簡單的(de)用(yòng)戶自(zì)定義函數∑±≥₹(shù),這(zhè)個(gè)函數(shù)基于checkdnsrr()÷©™,用(yòng)來(lái)驗證email地(dì)址的&$÷"(de)合法性。對(duì)于那(nà)些(xiē)認為(wèi)自(zì"¥ )己的(de)email地(dì)址是(shì)“joeuser@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én$☆ ♠g)夠加快(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)的(dλ​☆e)PEAR包。(參見(jiàn)PECL)
6.用(yòng)highlight_fδ₩ile()來(lái)自(zì)動的(de)打印出格式化(huà)的(de)很βφ(hěn)漂亮(liàng)的(de)源代碼。如(rú)果你(n↑αǐ)在留言闆、IRC這(zhè)些(xiē)地(dì)方尋求一(yī)個&₩(gè)腳本的(de)幫助的(de)話(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ì)應該在p•σhp.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_reporting(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)gzi©☆©•p算(suàn)法,可(kě)以壓縮普通(tōng)文(wén)本達φ‌→✘90%。在我每次要(yào)讀(dú)寫BLOδσB類型的(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ē)HTM>₩¶L背景大(dà)于Pascal背景的(de)程序員(yuá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ì)Sλ¥βQL注入和(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)。