TECH I.S.

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アプリケーションは外部入力を受け取ります。外部入力/データは次のとおりです。

  • フォームからのユーザー入力
  • Cookie
  • Webサービスデータ
  • サーバー変数
  • データベースクエリの結果

常に外部データを検証する必要があります。送信されたデータが無効であると、セキュリティ上の問題が発生し、Web ページが破損する可能性があります。PHPフィルターを使用すると、アプリケーションが正しい入力を確実に取得できます。


PHP filter_var()関数

filter_var()データの検証とサニタイズの両方に機能します。 filter_var()関数は、指定されたフィルターで単一の変数をフィルター処理します。次の2つのデータが必要です。
  • チェックしたい変数
  • 使用するチェックのタイプ

文字列をサニタイズする

次の例では、filter_var()文字列からすべての HTMLタグを削除する関数:

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


整数を検証する

次の例では、filter_var()変数$intが整数かどうかをチェックする関数。 $intが整数の場合、以下のコードの出力は「整数は有効です」になります。 $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に設定されている場合、上記の関数は「整数は無効です」を返します。この問題を解決するには、次のコードを使用します。

<?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()関数を使用して、まず$email変数から不正な文字をすべて削除し、次に有効なメールアドレスかどうかをチェックします:

<?php $email = "john.doe@example.com"; // 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"); } ?>


URLのサニタイズと検証

次の例では、filter_var()最初にURLからすべての不正な文字を削除し、次に$urlが有効なURLであるかどうかを確認する関数:

<?php $url = "https://www.w3schools.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フィルターリファレンス

すべてのフィルタ関数の完全なリファレンスについては、PHPフィルタリファレンスの各フィルタをチェックして、利用可能なオプションとフラグを確認してください。

リファレンスには、各機能の簡単な説明と使用例が含まれています。



プログラミング学習を加速させる

プログラミングをプロの講師に教えてもらいませんか。

テックアイエスのプログラミングスクールは初心者も大歓迎です。年齢制限もありません。転職・副業に強く、挫折させない手厚いサポートで稼ぐ力を身につけましょう!

スクールの詳細