最新的Web開發教程
 

PHP過濾器


驗證數據=確定是否該數據是以適當的形式。

消毒數據=從數據中刪除任何非法字符。


PHP的過濾器擴展

PHP過濾器用於驗證和消毒外部輸入。

PHP的過濾器擴展有很多需要檢查用戶輸入的功能,旨在使數據驗證更容易和更快。

filter_list()函數可用於列出PHP的過濾器擴展提供了什麼:

<table>
  <tr>
    <td>Filter Name</td>
    <td>Filter ID</td>
  </tr>
  <?php
  foreach (filter_list() as $id =>$filter) {
      echo '<tr><td>' . $filter . '</td><td>' . filter_id($filter) . '</td></tr>';
  }
  ?>
</table>
運行示例»

為什麼使用過濾器?

許多Web應用程序接收外部輸入。 外部輸入/數據可以是:

  • 從一種形式的用戶輸入
  • Cookies
  • Web服務數據
  • 服務器變量
  • 數據庫查詢結果

你應該總是驗證外部數據!
無效提交的數據可能會導致安全問題,打破你的網頁!
通過使用PHP的過濾器,你可以確保您的應用程序獲得正確的輸入!


PHP filter_var()函數

所述filter_var()函數既驗證和消毒的數據。

所述filter_var()函數濾波器具有指定過濾器的單個可變。 這需要兩個數據:

  • 要檢查變量
  • 類型檢查的使用

消毒的String

下面的示例使用filter_var()函數從字符串中刪除所有的HTML標籤:

<?php
$str = "<h1>Hello World!</h1>";
$newstr = filter_var($str, FILTER_SANITIZE_STRING);
echo $newstr;
?>
運行示例»

驗證一個整數

下面的示例使用filter_var()函數,以檢查是否變量$ int是一個整數。 如果$ int是一個整數,代碼的輸出將是: "Integer is valid" 。 如果$ int是不是一個整數,輸出將是: "Integer is not valid"

<?php
$int = 100;

if (!filter_var($int, FILTER_VALIDATE_INT) === false) {
    echo("Integer is valid");
} else {
    echo("Integer is not valid");
}
?>
運行示例»

提示: filter_var()和問題0

在上面的例子中,如果$ INT設置為0,上面的函數會返回"Integer is not valid" 。 為了解決這個問題,使用下面的代碼:

<?php
$int = 0;

if (filter_var($int, FILTER_VALIDATE_INT) === 0 || !filter_var($int, FILTER_VALIDATE_INT) === false) {
    echo("Integer is valid");
} else {
    echo("Integer is not valid");
}
?>
運行示例»

驗證IP地址

下面的示例使用filter_var()函數來檢查變量$ IP是一個有效的IP地址:

<?php
$ip = "127.0.0.1";

if (!filter_var($ip, FILTER_VALIDATE_IP) === false) {
    echo("$ip is a valid IP address");
} else {
    echo("$ip is not a valid IP address");
}
?>
運行示例»

消毒和驗證電子郵件地址

下面的示例使用filter_var()函數首先從$電子郵件變量刪除所有非法字符,然後檢查它是否是一個有效的電子郵件地址:

<?php
$email = "[email protected]";

// Remove all illegal characters from email
$email = filter_var($email, FILTER_SANITIZE_EMAIL);

// Validate e-mail
if (!filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
    echo("$email is a valid email address");
} else {
    echo("$email is not a valid email address");
}
?>
運行示例»

消毒和驗證網址

下面的示例使用filter_var()函數首先從URL中移除所有非法字符,然後檢查$ URL是有效的URL:

<?php
$url = "http://www.w3ii.com";

// Remove all illegal characters from a url
$url = filter_var($url, FILTER_SANITIZE_URL);

// Validate url
if (!filter_var($url, FILTER_VALIDATE_URL) === false) {
    echo("$url is a valid URL");
} else {
    echo("$url is not a valid URL");
}
?>
運行示例»

完整的PHP Filter參考手冊

對於所有的過濾器功能的完整參考,請給我們完整的PHP Filter參考手冊。 檢查每個過濾器,看看有什麼選項和標誌是可用的。

該手冊包含了簡要說明,並使用實例,每個功能!