PHP实用功能分享

小雨不喜欢废话,直接上菜!

1、PHP 使用 JSON

PHP 要使用 JSON 很方便, 只要用內建的 json_encode() 及 json_decode() 函式就可以, 以下簡單例子是在 PHP 用 json_encode() 輸出 JSON 資料:

上面的第 7 行, 用 json_encode() 函式輸出 $lang 的 JSON 資料, 然後放到 JavaScript 的變數。

如果反過來的話, 要將 JSON 資料傳送給 PHP, 那麼可以用 json_decode() 函就, 例如:

 2、PHP 用 CURL 傳送 POST 及 GET 表單

PHP 要擷取遠端網頁或者傳送 GET 請求可以用 file_get_contents() 函式做, 但如果要發送 POST 請求, 例如自動填寫表單等, 就可以用 CURL 實現。以下 PHP 的 CURL 模組發送 POST 及 GET 的方法:

PHP 傳送 GET 請求

如果只是傳送 GET 請求, 用 file_get_contents() 會較簡單, 只需在網址後面加上 GET 的名稱及值就可以, 例如:

上面會用 file_get_contents() 函式傳送 GET 請求到 http://localhost/path.php, 名稱是 get_var, 值是 test.

如果用 CURL 是這樣做:

PHP 傳送 POST 請求

要用 CURL 多數因為要傳送 POST, 例如自動傳送表單, 以下是簡單例子:

上面第 6 行用 CURLOPT_POST 宣告啟用 POST 內容, 而第 7 行用到 http_build_query 函式, 將陣列內容轉換成類似 GET 變數的格式, 即 abc=123&def=456。

有種情況是表單禁止用 PHP 等程式傳送, 那便需要用 CURL 自訂 user agent, 只要在 curl_exec 前入這行就可以了:

 3、PHP 判斷字串是否有中文

 4、PHP 檢查 Email 及 URL 格式

要檢查 Email 及 URL 格式可以用正規表達式來做, 以下兩個正規表達式分別可以檢查 Email 及 URL 的格式是否正確。但要留意, 以下程式碼只會檢查格式, 而不會檢查兩者的有效性, 要檢查有效性及真實性需要用其他方法。

PHP 檢查 Email 格式

PHP 檢查 URL 格式

5、PHP 取得用戶真實 IP

要用 PHP 取得用戶的 IP 十分容易,只要用 $_SERVER[‘REMOTE_ADDR’] 變數就可以知道用戶的 IP,但如果用戶使用了 proxy server 上網的話,$_SERVER[‘REMOTE_ADDR’] 只會得到 proxy 的 IP 地址。

以下方法會使用 $_SERVER[“HTTP_CLIENT_IP”] 及 $_SERVER[“HTTP_X_FORWARDED_FOR”] 解決這個問題:

6、PHP實現阻擋 ip

如果發現某些 ip 的用戶在網站上搗亂,可以將他/她的 ip 封殺,這不但可以停止搗亂行為,也可以減少主機的資源浪費及頻寬,以下介紹透過 PHP 及 Apache 的 .htaccess 的實現方法。

如果要阻擋的 ip 不多,可以直接加上以下一行到程式頂端:

以上程式碼很簡單,只要檢查訪客的 ip 是否 192.168.1.101,如果正確則結束程式罷了,但這樣的問題是當要阻擋的 ip 數量增多時,需要每次都在以上程式碼上加上 ip,要維護很不方便。以下的方法是使用文字檔儲存了要阻擋的 ip,每一行一筆資料,檔案為 ban_ip_list.dat,實現方法如下:

以上第一行是從 ban_ip_list.dat 讀入每一行資料,並儲存到 $banned 陣列內,然後用 in_array() 檢查訪客的 ip 如果在陣列內,則印出 “You have been banned.”,並且結束程式。

7、PHP 建立 Excel 檔案

有時需要將資料庫內的資料或 PHP 的動態內容儲存成 excel 檔,本文會介紹一個概簡單又實用的方法。

如果需要用 PHP 建立 Excel 檔案,只需用一般的檔案處理函式,而檔案名稱儲存成 .xls 副檔名即可,例如:

以上程式碼會在 excel 目錄建立一個名為 filename.xls 的檔案,內容是在第一行寫入一星期七天的英文簡寫,每一欄一天。

實際上與建立一般文字檔的方法一樣,只是如果要跳到下一個欄位,就用 \t 字元,而要跳到下一行,則用 \n 字元。

顯示下載窗口:如果電腦內有安裝 Excel 的話,在預設情況下當在 IE 按了 .xls 副檔名的文件時,IE 不會彈出下載窗口,而是直接顯示內容,以下兩個例子可避免這情況:

直接將內容輸出給瀏覽器下載:

讀取已存在的檔案給瀏覽器下載:

上面使用了 header() 傳送檔頭資訊給瀏覽器,可使瀏覽器出現下載窗口,而預設儲存的檔案名稱是 php_excel.xls。

8、PHP 判斷智能手機及平板電腦

判斷用戶是否用手機訪問網站後, 可以根據用戶的系統, 決定顯示一般大小的網頁, 或者手機及平板電腦的專屬網頁。

用 PHP 要判斷用戶是否用流動裝置訪問, 最簡單的方法是通過 $_SERVER[‘HTTP_USER_AGENT’] 檢查。每部電腦或者每個瀏覽器都有不同的 User Agent, 而 $_SERVER[‘HTTP_USER_AGENT’] 就是紀錄了用戶的 User Agent, 下面是常用手機的 User Agent 會出現的字串:

iPhone: 用 “iPhone” 作為判斷字串.

iPad: 用 “iPad” 作為判斷字串.

Android: 用 “Android” 作為判斷字串.

Windows Phone: 用 “Windows Phone” 作為判斷字串.

Black Berry: 用 “BlackBerry” 作為判斷字串.

然後用以下程式碼判斷用戶的裝置:

上面程式碼會判斷用戶的上網裝置, 然後可以按需要顯示不同的網頁, 但上面只列出部份常用流動裝置的 User Agent。

9、PHP 發送 HTML 電郵

用 PHP 發送純文字 Email 很簡單, 但如果要發送一封 HTML 格式的 Email, 只需要在 mail() 裡面加入 MIME 版本及 Content-type header 就可以完成, 要注意的是如果發送的是中文電郵, 需要指定使用的 charset, 以下是發送 HTML Email 簡單的例子:

以上用的方法是直接使用 mail() 函式, 再定義 MIME 及 Content-type 來傳送 HTML 電郵, 如果用 PHPMailer 的話會更簡單:

10、PHP解決 UTF-8 網頁亂碼

用 PHP 的 header() 向瀏覽器宣告使用 UTF-8 編碼, 但這行要放在程式開端, 輸出內容前插入:

11、製作簡單 PHP 計數器
在網站上其中一樣最常見的程式是計數器,本文將會講述如何製作一個簡單的 PHP 計數器,包括文字及圖形兩種顯示模式。

準備工作
計數器的原理十分簡單,只要使用資料庫或文字檔儲存瀏覽人數,當有新訪客時便將人數加 1。因為只要單純紀錄瀏覽人數,所以會介紹使用使用文字檔,這樣即使沒有 MySQL 資料庫也可以做到。

首先建立一個文字檔,例如 “counter.dat”,裡面只包含一個數目字 “0”,記得要將它 chmod 777,這樣 php 才可更新人數。

文字計數器

現在開始了,以下是紀錄人數的例子:

以上的 if(!isset($_COOKIE[‘visitor’])) 這句會檢查是否存在 $_COOKIE[‘visitor’] 變數,如果不存在的話才寫入紀錄。flock($fp, LOCK_EX); 是將 counter.dat 鎖定,避免其他程式寫入檔案。flock($fp, LOCK_UN); 就是解除先前的鎖定。

圖形計數器

上面的程式碼已經可以製作一個簡單的計數器,但只是文字,如果想改由圖片顯示的話,先要用圖像編輯軟件製作 0 至 9 的圖片,名稱分別是 0.gif, 1.gif, 2.gif …… 9.gif。然後將檔案放到 images 目錄,並將以上程式碼改成:

注意事項:不論是文字顯示或圖片顯示,以上的程式碼由第 1 行到第 12 到均需放置在頁面的最頂部,不然會發生錯誤。而第 12 行以後的內容就是顯示人數的地程式碼,需放到想要顯示的地方。

AD:站点文章对你有帮助,可以选择去百度口碑好评下,还可以点击此处

赞 (0) 口碑
分享到:更多 ()

评论 1

评论前必须登录!

  1. 软膜天花
    表示看不懂!