PHP 新手入門過濾器

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 驗證)

如果成功則傳回預期的類型,如果失敗則傳回FALSE

Sanitizing 篩選器:

用於允許或禁止在字串中指定的字元

無資料格式規則

始終傳回字串

選項和標誌

#選項和標誌用於為指定的篩選器新增額外的篩選選項。

不同的篩選器有不同的選項和標誌

<?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 變數中


繼續學習
||
<?php header("Content-type: text/html; charset=utf-8");//设置编码 $int = 123; if(!filter_var($int, FILTER_VALIDATE_INT)){ echo("不是一个合法的整数"); }else{ echo("是个合法的整数"); } ?>