1.php 過濾器
PHP 過濾器用於驗證和過濾來自非安全來源的數據,例如使用者的輸入。
2.什麼是php 過濾器
PHP 過濾器用於驗證和過濾來自非安全性來源的資料。
測試、驗證和過濾使用者輸入或自訂資料是任何 Web 應用程式的重要組成部分。 PHP 的過濾器擴充功能的設計目的是讓資料過濾更輕鬆快速
3.為什麼使用過濾器
幾乎所有的 Web 應用程式都依賴外部的輸入。這些數據通常來自使用者或其他應用程式(例如 web 服務)。透過使用篩選器,您能夠確保應用程式獲得正確的輸入類型
對外部資料進行過濾,會提高安全性,那麼有哪些外部資料呢?
(1).來自表單的輸入資料
(2).Cookies
(3).Web services data
(4).伺服器變數
(5).資料庫查詢結果
函數與篩選器
##如需篩選變量,請使用下面的過濾器函數之一:filter_var() - 透過一個指定的過濾器來過濾單一的變數filter_var_array() - 透過相同的或不同的過濾器來過濾多個變數filter_input - 取得一個輸入變量,並對它進行過濾filter_input_array - 取得多個輸入變量,並透過相同的或不同的過濾器對它們進行過濾<?php header("Content-type: text/html; charset=utf-8");//设置编码 $int = 123; if(!filter_var($int, FILTER_VALIDATE_INT)){ echo("不是一个合法的整数"); }else{ echo("是个合法的整数"); } ?>註:當我們寫上一個合法的整數,就會輸出是個合法的整數,如果不是則輸出不是合法的整數
Validating 和Sanitizing 這是兩個過濾器
Validating 篩選器:用於驗證使用者輸入嚴格的格式規則(例如URL 或E-Mail 驗證)如果成功則傳回預期的類型,如果失敗則傳回FALSESanitizing 篩選器:用於允許或禁止在字串中指定的字元無資料格式規則始終傳回字串
選項和標誌
#選項和標誌用於為指定的篩選器新增額外的篩選選項。 不同的篩選器有不同的選項和標誌<?php header("Content-type: text/html; charset=utf-8");//设置编码 $var=300; $int_options = array( "options"=>array( "min_range"=>0, "max_range"=>256 ) ); if(!filter_var($var, FILTER_VALIDATE_INT, $int_options)){ echo("不是一个合法的整数"); }else{ echo("是个合法的整数"); } ?>註:
就像上面的程式碼一樣,選項必須放入一個名為 "options" 的相關陣列中。如果使用標誌,則不需要在數組內。由於整數是"300",它不在指定的範圍內
驗證輸入
讓我們試著驗證來自表單的輸入。 我們需要做的第一件事情是確認是否存在我們正在尋找的輸入資料。 然後我們用 filter_input() 函數過濾輸入的資料。 在下面的實例中,輸入變數"email" 被傳到PHP 頁面<?php header("Content-type: text/html; charset=utf-8");//设置编码 if(!filter_has_var(INPUT_GET, "email")){ echo("没有 email 参数"); }else{ if (!filter_input(INPUT_GET, "email", FILTER_VALIDATE_EMAIL)){ echo "不是一个合法的 E-Mail"; }else{ echo "是一个合法的 E-Mail"; } } ?>註:當一個表單傳輸過來數據,首先檢測是否存在get 傳輸過來的資料
接著如果有傳送過來數據,在判斷是否是一個合法的email
#
淨化輸入
讓我們試著清理一下從表單傳來的 URL。
首先,我們要確認是否存在我們正在尋找的輸入資料。
然後,我們用 filter_input() 函數來淨化輸入資料。
在下面的實例中,輸入變數 "url" 被傳到 PHP 頁面:
<?php header("Content-type: text/html; charset=utf-8");//设置编码 if(!filter_has_var(INPUT_GET, "url")){ echo("没有 url 参数"); }else{ $url = filter_input(INPUT_GET, "url", FILTER_SANITIZE_URL); echo $url; } ?>
註:偵測是否存在 "GET" 類型的 "url" 輸入變數。
如果存在此輸入變量,對其進行淨化(刪除非法字元),並將其儲存在 $url 變數中