麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > PHP > 正文

PHP高級教程(11)-PHP過濾器(Filter)

2020-03-24 17:02:57
字體:
供稿:網(wǎng)友
PHP 過濾器用于驗(yàn)證和過濾來自非安全來源的數(shù)據(jù)。 驗(yàn)證和過濾用戶輸入或自定義數(shù)據(jù)是任何 Web html' target='_blank'>應(yīng)用程序的重要組成部分。 設(shè)計 PHP 的過濾器擴(kuò)展的目的是使數(shù)據(jù)過濾更輕松快捷。
為什么使用過濾器? 幾乎所有 web 應(yīng)用程序都依賴外部的輸入。這些數(shù)據(jù)通常來自用戶或其他應(yīng)用程序(比如 web 服務(wù))。通過使用過濾器,您能夠確保應(yīng)有程序獲得正確的輸入類型。 您應(yīng)該始終對外部數(shù)據(jù)進(jìn)行過濾! 輸入過濾是最重要的應(yīng)用程序安全課題之一。 什么是外部數(shù)據(jù)? 來自表單的輸入數(shù)據(jù) Cookies 服務(wù)器變量 數(shù)據(jù)庫查詢結(jié)果
filter_var() - 通過一個指定的過濾器來過濾單一的變量 filter_var_array() - 通過相同的或不同的過濾器來過濾多個變量 filter_input - 獲取一個輸入變量,并對它進(jìn)行過濾 filter_input_array - 獲取多個輸入變量,并通過相同的或不同的過濾器對它們進(jìn)行過濾 在下面的例子中,我們用 filter_var() 函數(shù)驗(yàn)證了一個整數(shù): ?php $int = 123; if(!filter_var($int, FILTER_VALIDATE_INT)) echo( Integer is not valid echo( Integer is valid ? 上面的代碼使用了 FILTER_VALIDATE_INT 過濾器來過濾變量。由于這個整數(shù)是合法的,因此代碼的輸出是: Integer is valid 。 假如我們嘗試使用一個非整數(shù)的變量,則輸出是: Integer is not valid 。
選項(xiàng)和標(biāo)志用于向指定的過濾器添加額外的過濾選項(xiàng)。 不同的過濾器有不同的選項(xiàng)和標(biāo)志。 在下面的例子中,我們用 filter_var() 和 min_range 以及 max_range 選項(xiàng)驗(yàn)證了一個整數(shù): ?php $var=300; $int_options = array( options = array min_range = 0, max_range = 256 if(!filter_var($var, FILTER_VALIDATE_INT, $int_options)) echo( Integer is not valid echo( Integer is valid ? 就像上面的代碼一樣,選項(xiàng)必須放入一個名為 options 的相關(guān)數(shù)組中。如果使用標(biāo)志,則不需在數(shù)組內(nèi)。 由于整數(shù)是 300 ,它不在指定的氛圍內(nèi),以上代碼的輸出將是 Integer is not valid 。 如需完整的函數(shù)及過濾器列表,請訪問 W3School 提供的 PHP Filter 參考手冊。您可以看到每個過濾器的可用選項(xiàng)和標(biāo)志。
讓我們試著驗(yàn)證來自表單的輸入。 我們需要作的第一件事情是確認(rèn)是否存在我們正在查找的輸入數(shù)據(jù)。 然后我們用 filter_input() 函數(shù)過濾輸入的數(shù)據(jù)。 在下面的例子中,輸入變量 email 被傳到 PHP 頁面: ?php if(!filter_has_var(INPUT_GET, email )) echo( Input type does not exist if (!filter_input(INPUT_GET, email , FILTER_VALIDATE_EMAIL)) echo E-Mail is not valid else echo E-Mail is valid ? 例子解釋: 上面的例子有一個通過 GET 方法傳送的輸入變量 (email): 檢測是否存在 GET 類型的 email 輸入變量 如果存在輸入變量,檢測它是否是有效的郵件地址
讓我們試著清理一下從表單傳來的 URL。 首先,我們要確認(rèn)是否存在我們正在查找的輸入數(shù)據(jù)。 然后,我們用 filter_input() 函數(shù)來凈化輸入數(shù)據(jù)。 在下面的例子中,輸入變量 url 被傳到 PHP 頁面: ?php if(!filter_has_var(INPUT_POST, url )) echo( Input type does not exist $url = filter_input(INPUT_POST, url , FILTER_SANITIZE_URL); ? 例子解釋: 上面的例子有一個通過 POST 方法傳送的輸入變量 (url): 檢測是否存在 POST 類型的 url 輸入變量 如果存在此輸入變量,對其進(jìn)行凈化(刪除非法字符),并將其存儲在 $url 變量中 假如輸入變量類似這樣: http://www.W3#$%S^%$#ool.com.cn/ ,則凈化后的 $url 變量應(yīng)該是這樣的: http://www.W3School.com.cn/
過濾多個輸入 表單通常由多個輸入字段組成。為了避免對 filter_var 或 filter_input 重復(fù)調(diào)用,我們可以使用 filter_var_array 或 the filter_input_array 函數(shù)。 在本例中,我們使用 filter_input_array() 函數(shù)來過濾三個 GET 變量。接收到的 GET 變量是一個名稱、一個年齡以及一個郵件地址: ?php $filters = array name = array filter = FILTER_SANITIZE_STRING age = array filter = FILTER_VALIDATE_INT, options = array min_range = 1, max_range = 120 email = FILTER_VALIDATE_EMAIL, $result = filter_input_array(INPUT_GET, $filters); if (!$result[ age ]) echo( Age must be a number between 1 and 120. br / elseif(!$result[ email ]) echo( E-Mail is not valid. br / echo( User input is valid ? 例子解釋: 上面的例子有三個通過 GET 方法傳送的輸入變量 (name, age and email) 設(shè)置一個數(shù)組,其中包含了輸入變量的名稱,以及用于指定的輸入變量的過濾器 調(diào)用 filter_input_array 函數(shù),參數(shù)包括 GET 輸入變量及剛才設(shè)置的數(shù)組 檢測 $result 變量中的 age 和 email 變量是否有非法的輸入。(如果存在非法輸入,) filter_input_array() 函數(shù)的第二個參數(shù)可以是數(shù)組或單一過濾器的 ID。 如果該參數(shù)是單一過濾器的 ID,那么這個指定的過濾器會過濾輸入數(shù)組中所有的值。 如果該參數(shù)是一個數(shù)組,那么此數(shù)組必須遵循下面的規(guī)則: 必須是一個關(guān)聯(lián)數(shù)組,其中包含的輸入變量是數(shù)組的鍵(比如 age 輸入變量) 此數(shù)組的值必須是過濾器的 ID ,或者是規(guī)定了過濾器、標(biāo)志以及選項(xiàng)的數(shù)組
使用 Filter Callback 通過使用 FILTER_CALLBACK 過濾器,可以調(diào)用自定義的函數(shù),把它作為一個過濾器來使用。這樣,我們就擁有了數(shù)據(jù)過濾的完全控制權(quán)。 您可以創(chuàng)建自己的自定義函數(shù),也可以使用已有的 PHP 函數(shù)。 規(guī)定您準(zhǔn)備用到過濾器的函數(shù),與規(guī)定選項(xiàng)的方法相同。 在下面的例子中,我們使用了一個自定義的函數(shù)把所有 _ 轉(zhuǎn)換為空格: ?php function convertSpace($string) return str_replace( _ , , $string); $string = Peter_is_a_great_guy! echo filter_var($string, FILTER_CALLBACK, array( options = convertSpace )); ? 以上代碼的結(jié)果是這樣的: Peter is a great guy! 例子解釋: 上面的例子把所有 _ 轉(zhuǎn)換成空格: 創(chuàng)建一個把 _ 替換為空格的函數(shù) 調(diào)用 filter_var() 函數(shù),它的參數(shù)是 FILTER_CALLBACK 過濾器以及包含我們的函數(shù)的數(shù)組html教程

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 黄污在线观看 | 911色_911色sss主站色播 | 黄色影院在线 | 日韩精品羞羞答答 | 全黄性色大片 | 国产一区二区三区色淫影院 | 91成人免费视频 | 最新在线黄色网址 | 一区二区三区黄色 | 国产精品久久久久久久午夜片 | 欧美成人一区免费视频 | 毛片免费观看视频 | 香蕉国产片 | 在线a毛片免费视频观看 | av中文在线观看 | 在线a亚洲视频播放在线观看 | 天天透天天狠天天爱综合97 | 美女黄网站免费观看 | 久久精品国产99国产精品澳门 | 黄色羞羞视频在线观看 | 久久国产精品久久久久 | 欧日韩在线| 国产91久久久久久 | 久久新网址 | 国产成人高潮免费观看精品 | 亚洲精品欧美二区三区中文字幕 | 日日操操 | 欧美高清在线精品一区二区不卡 | 91精选视频在线观看 | 国产精品久久久久久久久久三级 | 黄色男女视频 | 黄色的视频免费看 | 激情久久一区二区 | 国产一区二区三区四区五区在线 | 一级做a在线观看 | 亚洲国产女同久久 | 国产乱淫av | a网在线 | 日本在线播放一区二区 | 成人在线视频一区 | 日本一区视频在线观看 |