PHP 新手入門過濾器LOGIN

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("是个合法的整数"); } ?>
章節課件