PHP 10條有用的建議

2021-08-25 04:57:09 字數 3289 閱讀 4923

1.使用ip2long() 和long2ip()函式來把ip位址轉化成整型儲存到資料庫裡。

這種方法把儲存空間降到了接近四分之一(char(15)的15個位元組對整形的4個位元組),計算乙個特定的位址是不是在乙個區段內頁更簡單了, 而且加快了搜尋和排序的速度(雖然有時僅僅是快了一點)。

2.在驗證email位址的時候使用checkdnsrr() 函式驗證網域名稱是否存在。

3.如果你使用的是php 5和mysql 4.1 或者更高的版本,考慮用mysqli_* 系列函式。

乙個很好的功能就是你可以使用預處理語句,如果你在維護乙個資料庫密集型站點,這個功能能夠加快查詢速度。一些評估分數。

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

5.如果你在專案中感覺到有可復用的部分,在你寫下一行**前先看看pear中是否已經有了。

6.用 highlight_file()來自動的列印出格式化的很漂亮的源**。

highlight_file() 函式對檔案進行語法高亮顯示。

highlight_file(filename,return)

filename

必需。要進行高亮處理的 php 檔案的路徑。

return

可選。如果設定 true,則本函式返回高亮處理的**。

本函式通過使用 php 語法高亮程式中定義的顏色,輸出或返回包含在 filename 中的**的語法高亮版本。

許多伺服器被配置為對帶有 phps 字尾的檔案進行自動高亮處理。例如,在檢視 example.phps 時,將顯示該檔案被語法高亮顯示的源**。要啟用該功能,請把下面這一行新增到 httpd.conf :

如果 return 引數被設定為 true,那麼該函式會返回被高亮處理的**,而不是輸出它們。否則,若成功,則返回 true,失敗則返回 false。

例項:

<?php

highlight_file("test.php");

?>

7.使用 error_reporting(0)函式來防止使用者看到潛在的敏感錯誤資訊。

在理想情況下,發布伺服器應該在php.ini 裡完全禁止。但是如果你用的是乙個共享的 web 伺服器的話,你沒有自己的 php.ini 檔案,那麼這種情況下你最好的選擇就是在所有指令碼的第一行前加上 error_reporting(0);(或者使用 require_once() 方法)。這就能夠在出錯的時候完全遮蔽敏感的sql查詢語句和路徑名。

error_reporting() 設定 php 的報錯級別並返回當前級別。

遮罩值   表示名稱    

1   e_error    

2   e_warning    

4   e_parse    

8   e_notice    

16   e_core_error    

32   e_core_warning    

e_notice   表示一般情形不記錄,只有程式有錯誤情形時才用到,例如企圖訪問乙個不存在的變數,或是呼叫   stat()   函式檢視不存在的檔案。    

e_warning   通常都會顯示出來,但不會中斷程式的執行。這對除錯很有效。例如:用有問題的正規表示式呼叫   ereg()。    

e_error   通常會顯示出來,亦會中斷程式執行。意即用這個遮罩無法追查到記憶體配置或其它的錯誤。    

e_parse   從語法中解析錯誤。    

e_core_error   類似   e_error,但不包括   php   核心造成的錯誤。    

e_core_warning   類似   e_warning,但不包括   php   核心錯誤警告。

8.在網資料庫中儲存很大的字串之前使用 gzcompress() 和 gzuncompress() 來顯式的壓縮/解壓字串。

這個php內建函式使用 gzip 演算法,可以壓縮普通文字達 90%。在我每次要讀寫blob型別的字段的時候都使用這些函式。唯一額例外就是當我需要全文檢索的時候。

string gzcompress (string data [, int level])

說明 :

結果返回乙個輸入值string的壓縮版本,失敗則返回false。非必需引數level可以給予0到9,0表示無壓縮,9表示最大的壓縮。

不過這個壓縮不是gzip壓縮

9.通過「引用」傳遞引數的方法從乙個函式中得到多個返回值。

就像三元運算子一樣,大部分受過正式程式設計訓練的程式設計師都知道這個技巧。但是那些 html 背景大於 pascal 背景的程式設計師都或多或少的有過這樣的疑問「在僅能使用一次 return 的情況下,從乙個函式裡返回多個值?」答案就是在變數前加上乙個 「&」 符號,通過「引用」傳遞而非「值」傳遞。

10.完全理解「魔術引號」和 sql 注入的危險性。

我希望閱讀到這裡的開發者都已經很對sql注入很了解了。不過我還是把這條列在這裡,是因為這個確實有點難以理解。

魔術引號(magic quote)是乙個自動將進入 php 指令碼的資料進行轉義的過程。最好在編碼時不要轉義而在執行時根據需要而轉義。

什麼是魔術引號

當開啟時,所有的 '(單引號),"(雙引號),\(反斜線)和 null 字元都會被自動加上乙個反斜線進行轉義。這和 addslashes() 作用完全相同。

一共有三個魔術引號指令:

* magic_quotes_gpc 影響到 http 請求資料(get,post 和 cookie)。不能在執行時改變。在 php 中預設值為 on。 參見 get_magic_quotes_gpc()。

* magic_quotes_runtime 如果開啟的話,大部份從外部**取得資料並返回的函式,包括從資料庫和文字檔案,所返回的資料都會被反斜線轉義。該選項可在執行的時改變,在 php 中的預設值為 off。 參見 set_magic_quotes_runtime() 和 get_magic_quotes_runtime()。

* magic_quotes_sybase 如果開啟的話,將會使用單引號對單引號進行轉義而非反斜線。此選項會完全覆蓋 magic_quotes_gpc。如果同時開啟兩個選項的話,單引號將會被轉義成 ''。而雙引號、反斜線 和 null 字元將不會進行轉義。 如何取得其值參見 ini_get()。

PHP 10 流程控制

原文 php 10 流程控制 感覺php和其他語言相似。說說php提供的流程控制關鍵字吧。條件if else elseif switch 迴圈 while dowhile break continue forforeach 需要強調的一點是foreach,其語法是 foreach array exp...

php 10時間函式

date default timezone get 獲取當前設定時區 date default timezone set 時區 設定當前時區 備註 我國時區為prc。date format 時間戳 例子echo date y m d h i s 2018 03 28 13 20 41 time 返回...

10條防採集建議

筆者自己是寫採集器的,所以對 防採集有一些心得體會。因為是在上班時間,各種方法只是簡單的提及。很多防採集方法在施行的時候需要考慮是否影響搜尋引擎對 的抓取,所以先來分析下一般採集器和搜尋引擎爬蟲採集有何不同。相同點 a.兩者都需要直接抓取到網頁原始碼才能有效工作,b.兩者單位時間內會多次大量抓取被訪...