Category: PHP
在 PHP 內有一個安全選項是 open_basedir,這個選項是限制 PHP 可以開啟的目錄,可以透過 php.ini 及 httpd.conf 設定,而我一直也有使用這個選項。 今天 server 要改一些設定,要將兩個目錄加入 open_basedir 內,發現用論用空格、逗號、分號來區隔兩個目錄都不行,而根據 PHP 官方網站的說法,這個選擇是支援多個目錄的。在 google 找了一下,原來要用冒號來區隔兩個目錄,例如: open_basedir “/path/dir1/:/var/tmp/”
如果發現某些 ip 的用戶在網站上搗亂,可以將他/她的 ip 封殺,這不但可以停止搗亂行為,也可以減少主機的資源浪費及頻寬,以下介紹透過 PHP 及 Apache 的 .htaccess 的實現方法。 PHP 如果要阻擋的 ip 不多,可以直接加上以下一行到程式頂端: 以上程式碼很簡單,只要檢查訪客的 ip 是否 192.168.1.101,如果正確則結束程式罷了,但這樣的問題是當要阻擋的 ip 數量增多時,需要每次都在以上程式碼上加上 ip,要維護很不方便。以下的方法是使用文字檔儲存了要阻擋的 ip,每一行一筆資料,檔案為 ban_ip_list.dat,實現方法如下: 以上第一行是從 ban_ip_list.dat 讀入每一行資料,並儲存到 $banned 陣列內,然後用 …
要用 PHP 取得用戶的 IP 十分容易,只要用 $_SERVER 變數就可以知道用戶的 IP,但如果用戶使用了 proxy server 上網的話,$_SERVER 只會得到 proxy 的 IP 地址。 以下方法會使用 $_SERVER 及 $_SERVER 解決這個問題:
PHP 的 is_file() 及 file_exists() 都是用作檢查檔案是否存在,它們的分別是 file_exists() 輸入的參數是目錄也會回傳 TRUE,而 is_file() 則只會對檔案回傳 TRUE: 但如果用 is_file(),即使 /path/to/dir 目錄存在,仍然會回傳 FALSE:
很多情況下 PHP 需要定時自動執行,這個可以用 Crontab 排程定時執行實現,以下是幾種實現方法: 方法一: 1. 在 PHP 程式的第一行加入: 請留意,我的 PHP 是路徑在 /usr/bin/php,請根據你的 PHP 執行檔位置作出修改。 2. 將 PHP 程式給予可執行權限: chmod +x testing.php 3. 執行 crontab -e,然後加入以下內容: 00 00 …
基於 HTTP 協定的限制,要實現統計線上人數會很困難。而現時大部份網站或論壇所使用的方法是,統計在過去某段時間內有所活動的訪客,便計算為線上人數,本文會介紹使用 PHP + MySQL 製作一個線上人數計數器。 在開始前請先確定網頁伺服器支援 PHP,以及有一個可用的 MySQL 資料庫,如果沒有 MySQL 資料庫,請向你的系統管理員或網頁寄存供應商查詢。 建立資料庫 第一步需要先建立一個 MySQL 資料表,可以在文字模式或 phpmyadmin 下執行以下 SQL 語句: PHP 程式碼 當建立以上資料表後,便可以編寫 PHP 程式了,以下例子假設你的 MySQL 登入資料如下: Host: …
如果網站內有些網頁只希望提供給管理員,那麼便需設置一個密碼認證功能。在 PHP 中製作密碼認證的方法有好幾種,以下介紹較為簡單的 HTTP authentication。 需要 PHP 在 Apache module 下執行才有這功能,而在 IIS 及 PHP 使用 CGI Mode 安裝則沒有這個功能。 HTTP authentication PHP 內實現 HTTP authentication 的原理是使用 header() 傳送一個 “Authentication Required” …
建文 HTML 表單 要製作用作上傳檔案的表單與傳統的表單差不多,但必須將表單中的 enctype 屬性設成 multipart/form-data。enctype 屬性是指定瀏覽器對表單中的參數進行編碼的方法,預設值為 application/x-www-form-urlencoded。 以下是建立表單的例子: upload.html 處理上傳檔案 建立了以上的 HTMl 表單後,下一步要做的就是後端的處理。在 PHP 中可以透過二維陣列 $HTTP_POST_FILES 或 $_FILES 來存取所上傳的檔案詳細內容。就以以上表單為例,輸入元素名為 userfile,各陣列元素為: $_FILES — 檔案在客戶端電腦上的檔案名稱 $_FILES — 檔案的 MIME …
要用 PHP 自動創建一個圖片的縮圖,做法十分簡單,因為 PHP 已內建了相關函式。本文將會介紹製作縮圖的巨體做法。 (Web Server 需要 GD 支援) imagecopyresized PHP 已經內建了製作縮圖的函式,它是 imagecopyresized,以下是 imagecopyresized 的語法: int imagecopyresized ( resource dst_image, resource src_image, int dst_x, int dst_y, int src_x, …
有時需要將資料庫內的資料或 PHP 的動態內容儲存成 excel 檔,本文會介紹一個概簡單又實用的方法。 建立 Excel 檔案 如果需要用 PHP 建立 Excel 檔案,只需用一般的檔案處理函式,而檔案名稱儲存成 .xls 副檔名即可,例如: 以上程式碼會在 excel 目錄建立一個名為 filename.xls 的檔案,內容是在第一行寫入一星期七天的英文簡寫,每一欄一天。 實際上與建立一般文字檔的方法一樣,只是如果要跳到下一個欄位,就用 \t 字元,而要跳到下一行,則用 \n 字元。 顯示下載窗口 如果電腦內有安裝 Excel 的話,在預設情況下當在 …