| 導購 | 订阅 | 在线投稿
分享
 
 
 

你不了解PHP的10件事情

來源:互聯網  2008-12-22 08:10:26  評論

1.使用 ip2long() 和 long2ip() 函數來把 IP 地址轉化成整型存儲到數據庫裏。這種方法把存儲空間降到了接近四分之一(char(15) 的 15 個字節對整形的 4 個字節),計算一個特定的地址是不是在一個區段內頁更簡單了,而且加快了搜索和排序的速度(雖然有時僅僅是快了一點)。

2.在驗證 email 地址的時候使用 checkdnsrr() 函數驗證域名是否存在。這個內置函數能夠確認指定的域名能夠解析成 IP 地址。該函數的PHP 文檔的用戶評論部分有一個簡單的用戶自定義函數,這個函數基于 checkdnsrr(),用來驗證 email 地址的合法性。對于那些認爲自己的 email 地址是 「joeuser@wwwphp.net」 而不是 「joeuser@php.net」 的家夥們,這個方法可以很方便的抓住他們。

3.如果你使用的是 PHP 5 和 MySQL 4.1 或者更高的版本,考慮抛棄 mysql_* 系列函數改用改進版的 mysqli_* 系列函數。一個很好的功能就是你可以使用預處理語句,如果你在維護一個數據庫密集型站點,這個功能能夠加快查詢速度。一些評估分數。

4.學會愛上三元運算符。

5.如果你在項目中感覺到有可複用的部分,在你寫下一行代碼前先看看 PEAR 中是否已經有了。很多 PHP 程序員都知道 PEAR 是一個很好的資源庫,雖然還有很多程序員不知道。這個在線資源庫包含了超過 400 個可以複用的程序片段,這些程序片段你可以立即用刀你的程序裏。除非說你的項目真的是非常特別的,你總能找到幫你節省時間的 PEAR 包。(參見 PECL)

6.用 highlight_file() 來自動的打印出格式化的很漂亮的源代碼。如果你在留言板、IRC 這些地方尋求一個腳本的幫助的話,這個函數用起來非常的順手。當然了,要小心不要意外的泄露出你的數據庫連接信息和密碼等。

7.使用 error_reporting(0) 函數來防止用戶看到潛在的敏感錯誤信息。]在理想情況下,發布服務器應該在 php.ini 裏完全禁止。但是如果你用的是一個共享的 web 服務器的話,你沒有自己的 php.ini 文件,那麽這種情況下你最好的選擇就是在所有腳本的第一行前加上 error_reporting(0);(或者使用 require_once() 方法)。這就能夠在出錯的時候完全屏蔽敏感的 SQL 查詢語句和路徑名。

8.在網數據庫中存儲很大的字符串之前使用 gzcompress() 和 gzuncompress() 來顯式的壓縮/解壓字符串。這個 PHP 內置函數使用 gzip 算法,可以壓縮普通文本達 90%。在我每次要讀寫 BLOB 類型的字段的時候都使用這些函數。唯一額例外就是當我需要全文檢索的時候。

9.通過「引用」傳遞參數的方法從一個函數中得到多個返回值。就像三元運算符一樣,大部分受過正式編程訓練的程序員都知道這個技巧。但是那些 HTML 背景大于 Pascal 背景的程序員都或多或少的有過這樣的疑問「在僅能使用一次 return 的情況下,從一個函數裏返回多個值?」答案就是在變量前加上一個 「&」 符號,通過「引用」傳遞而非「值」傳遞。

10.完全理解「魔術引號」和 SQL 注入的危險性。我希望閱讀到這裏的開發者都已經很對 SQL 注入和了解了。不過我還是把這條列在這裏,是因爲這個確實有點難以理解。如果你還沒有聽說過這種說法,那麽把今天剩下的時間都用來 Google、閱讀吧。

1.使用 ip2long() 和 long2ip() 函數來把 IP 地址轉化成整型存儲到數據庫裏。這種方法把存儲空間降到了接近四分之一(char(15) 的 15 個字節對整形的 4 個字節),計算一個特定的地址是不是在一個區段內頁更簡單了,而且加快了搜索和排序的速度(雖然有時僅僅是快了一點)。 2.在驗證 email 地址的時候使用 checkdnsrr() 函數驗證域名是否存在。這個內置函數能夠確認指定的域名能夠解析成 IP 地址。該函數的PHP 文檔的用戶評論部分有一個簡單的用戶自定義函數,這個函數基于 checkdnsrr(),用來驗證 email 地址的合法性。對于那些認爲自己的 email 地址是 [url=mailto:「joeuser@wwwphp.net]「joeuser@wwwphp.net[/url]」 而不是 [url=mailto:「joeuser@php.net]「joeuser@php.net[/url]」 的家夥們,這個方法可以很方便的抓住他們。 3.如果你使用的是 PHP 5 和 MySQL 4.1 或者更高的版本,考慮抛棄 mysql_* 系列函數改用改進版的 mysqli_* 系列函數。一個很好的功能就是你可以使用預處理語句,如果你在維護一個數據庫密集型站點,這個功能能夠加快查詢速度。一些評估分數。 4.學會愛上三元運算符。 5.如果你在項目中感覺到有可複用的部分,在你寫下一行代碼前先看看 PEAR 中是否已經有了。很多 PHP 程序員都知道 PEAR 是一個很好的資源庫,雖然還有很多程序員不知道。這個在線資源庫包含了超過 400 個可以複用的程序片段,這些程序片段你可以立即用刀你的程序裏。除非說你的項目真的是非常特別的,你總能找到幫你節省時間的 PEAR 包。(參見 PECL) 6.用 highlight_file() 來自動的打印出格式化的很漂亮的源代碼。如果你在留言板、IRC 這些地方尋求一個腳本的幫助的話,這個函數用起來非常的順手。當然了,要小心不要意外的泄露出你的數據庫連接信息和密碼等。 7.使用 error_reporting(0) 函數來防止用戶看到潛在的敏感錯誤信息。]在理想情況下,發布服務器應該在 php.ini 裏完全禁止。但是如果你用的是一個共享的 web 服務器的話,你沒有自己的 php.ini 文件,那麽這種情況下你最好的選擇就是在所有腳本的第一行前加上 error_reporting(0);(或者使用 require_once() 方法)。這就能夠在出錯的時候完全屏蔽敏感的 SQL 查詢語句和路徑名。 8.在網數據庫中存儲很大的字符串之前使用 gzcompress() 和 gzuncompress() 來顯式的壓縮/解壓字符串。這個 PHP 內置函數使用 gzip 算法,可以壓縮普通文本達 90%。在我每次要讀寫 BLOB 類型的字段的時候都使用這些函數。唯一額例外就是當我需要全文檢索的時候。 9.通過「引用」傳遞參數的方法從一個函數中得到多個返回值。就像三元運算符一樣,大部分受過正式編程訓練的程序員都知道這個技巧。但是那些 HTML 背景大于 Pascal 背景的程序員都或多或少的有過這樣的疑問「在僅能使用一次 return 的情況下,從一個函數裏返回多個值?」答案就是在變量前加上一個 「&」 符號,通過「引用」傳遞而非「值」傳遞。 10.完全理解「魔術引號」和 SQL 注入的危險性。我希望閱讀到這裏的開發者都已經很對 SQL 注入和了解了。不過我還是把這條列在這裏,是因爲這個確實有點難以理解。如果你還沒有聽說過這種說法,那麽把今天剩下的時間都用來 Google、閱讀吧。
󰈣󰈤
王朝萬家燈火計劃
期待原創作者加盟
 
 
 
>>返回首頁<<
 
 
 
 
 熱帖排行
 
 
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有