首頁 > 後端開發 > php教程 > php中使用濾波功能的輸入驗證

php中使用濾波功能的輸入驗證

WBOY
發布: 2016-07-25 09:10:27
原創
965 人瀏覽過
  1. if (isset($_GET["value"])) {
  2. $value = $_GET["value"];
  3. }
  4. else {
  5. $value = false;
  6. }
  7. if (is_numeric($value) && ($value >= 15 && $value /value /value / / run my code
  8. }
  9. else {
// handle the issue
}
複製代碼

這是一個非常基本的例子,我們已經寫更多的行,我想看??的。 首先,因為我們無法確定設定的$ _GET,程式碼執行適當的檢查,使腳本不翻倒。 其次是美元值現在是一個「髒」的變量,因為它已直接從指定的$ _GET價值的事實。我們需要照顧,不使用美元的價值在代碼的其他地方的情況下,我們打破任何東西。 再有就是,16.0 is_numeric()函數是有效的,因為各種語氣詞它的問題。 最後,我們必須與事實問題,如果聲明是了一口採取位,是一個額外的邏輯位通過當你通過代碼跟踪工作。 現在比較上面的例子:
  1. $value = filter_input(INPUT_GET, "value", FILTER_VALIDATE_INT,
  2. array = options" min_range" => 15, "max_range" => 20)));
  3. if ($value) {
  4. // run my code
  5. }
  6. else {
// handle the issue
}
複製程式碼

不會讓你覺得溫暖模糊? filter_input()處理的$ _GET值沒有被設置,所以你不必強調腳本是否接收正確的訊息,或不。 你也不必擔心美元價值是骯髒的,因為它已被證實之前,它已經被分配。 注意現在的16.0不再有效。 最後,我們的邏輯不再複雜。這只是一個快速檢查為truthy值(filter_input()如果驗證失敗,將返回false和null如果沒有設定$ _GET [“價值”)。 顯然,在一個真實的世界設定,你可以提取數組儲存在設定檔中的變數到某個地方,以便可以得到的東西,甚至無需進入業務邏輯改變。華麗! 現在,你可能會想,這可能是有用搶一對夫婦的簡單腳本的$ _GET或$ _POST變量,但內部使用的函數或類別約?幸運的是,我們有該filter_var() 。 filter_var()函數被引入,同時作為filter_input()做同樣的事情。
  1. //這是一個範例函數,不使用這實際上電子郵件,

  2. //那將是愚蠢的。

  3. function emailUser($email) {
  4. mail($email, "Here is my email", "Some Content");
}
}

}
  1. }
  2. }
  3. 複製程式碼
這裡的危險是,有沒有試圖發送一封電子郵件,從字面上任何值可以儲存在停止郵件()函數$電子郵件。這可能會導致無法發送電子郵件,或東西越來越可能在最壞的情況下使用的惡意功能。 我所看到的人所做的 ??結果支票的mail() ,這是很好看,如果該函數成功完成,但損害的是時間值返回。 像這樣的東西是比較理智:
// This is a sample function, do not use this to actually email, // that would be s. function emailUser($email) { $email = filter_var($email, FILTER_VALIDATE_EMAIL); if ($email !== false) { mail($e, "Here is my email ", "Some Content"); } else { // handle the issue invalid email address } } } }複製程式碼 }複製程式碼 }複製程式碼 }複製程式碼 }

用了很多例子,包括上述的問題是,他們是基本的。你可能會想,不能用於基本檢查以外的任何filter_var()或filter_input() 。並允許你在一個過濾器傳遞給這些函數稱為FILTER_CALLBACK。 FILTER_CALLBACK讓您可以透過在您建立將接受被過濾的變數輸入功能-這是哪裡,你就可以開始,因為有很多的樂趣,你就可以開始自己的業務邏輯應用到您的過濾。 一些潛在的缺陷 這些功能是非常偉大,他們讓你做一些真正強大的過濾,我們已經討論過,可以幫助提高你的程式碼的安全性和可靠性。但也有一些潛在的缺點,我會覺得自己是失職的,如果我不指出。 主要缺陷是,只要你的過濾器適用於它的功能是。最後一個例子,使用電子郵件驗證-如何處理電子郵件地址改變5.2.14和5.3.3之間FILTER_VALIDATE_EMAIL,即使假設所有的應用程式上運行同一版本的PHP有電子郵件地址,在技術上是有效的,你可能不希望。請確保您知道您所使用的過濾器。 第二個陷阱是,人們認為,如果他們在一些過濾器,然後把他們的程式碼是安全的。篩選的變數去一些幫助,但它不會使你的程式碼100%安全不受虐待。我很想談談這個問題,但超出了本文的範圍和我的字數已經是相當高的! 總結: 我想你在你的程式碼的一個函數,只有一個,看看會發生什麼,當你在不同的資料類型和不同的價值觀傳遞。 然後,我想你申請一些在這裡討論的過濾方法,看看是否有在您的程式碼如何執行差異。我很想知道你是怎麼在評論。



來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板