PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

PHPのFILTER_VALIDATE_IP定数とは?IPアドレス検証の使い方を解説

FILTER_VALIDATE_IP定数は、PHPのフィルタ機能において、値が有効なIPアドレスかどうかを検証するために使用されます。ユーザー入力のバリデーションなど、フォーム処理やAPIの入力チェックでよく活用される定数です。

使用できるフラグ

FILTER_VALIDATE_IPは、以下のフラグと組み合わせて使用することで、より厳密な検証が可能になります。

  • FILTER_FLAG_IPV4 − 値が有効なIPv4アドレスである必要があります

  • FILTER_FLAG_IPV6 − 値が有効なIPv6アドレスである必要があります

  • FILTER_FLAG_NO_PRIV_RANGE − 値がプライベートIPアドレス範囲(例:10.0.0.0/8、192.168.0.0/16など)に含まれていてはいけません

  • FILTER_FLAG_NO_RES_RANGE − 値が予約済みIPアドレス範囲(例:0.0.0.0/8など)に含まれていてはいけません

戻り値について

なお、FILTER_VALIDATE_IP定数自体は値を返しません。この定数は、filter_var()関数の第2引数として指定することで、検証結果を取得するために使用します。filter_var()関数は、検証が成功した場合はIPアドレスの値を、失敗した場合はfalseを返します。

使用例

例1:無効なIPアドレスの場合

<?php
   $ip = "35.2.1";
   if (filter_var($ip, FILTER_VALIDATE_IP)) {
      echo("Valid IP address!");
   } else {
      echo("Invalid IP address!");
   }
?>

このコードでは、オクテットが2つしかない「35.2.1」という不正な形式のIPアドレスを検証しています。実行結果は以下の通りです。

Invalid IP address!

例2:有効なIPアドレスの場合

次に、有効なIPアドレスを検証する例を見てみましょう。

<?php
   $ip = "127.0.0.1";
   if (filter_var($ip, FILTER_VALIDATE_IP)) {
      echo("Valid IP address!");
   } else {
      echo("Invalid IP address!");
   }
?>

実行結果は以下の通りです。

Valid IP address!

まとめ

FILTER_VALIDATE_IP定数を使用することで、IPv4・IPv6の両方に対応したIPアドレスの簡単な検証が実現できます。フラグを組み合わせれば、プライベートアドレスや予約済みアドレスを除外するなど、用途に応じた柔軟なバリデーションが可能です。ユーザーからの入力値を扱う際は、セキュリティ対策として積極的に活用しましょう。


  1. PHPのFILTER_VALIDATE_EMAIL定数とは?メールアドレスの妥当性を検証する方法

    概要FILTER_VALIDATE_EMAILは、PHPのfilter拡張機能で提供されている定数の一つで、指定された値が有効なメールアドレスの形式に合致しているかどうかを検証するために使用します。この定数は単体では動作せず、filter_var()関数と組み合わせて利用するのが一般的です。戻り値FILTER_VALIDATE_EMAIL自体はフィルターIDを表す定数であるため、それ自身は何も値を返しません。実際の検証結果は、この定数を第2引数に渡したfilter_var()関数が返します。検証に成功した場合はメールアドレスの値そのものが返され、失敗した場合はfalseが返されます。使用例以下

  2. PHPのFILTER_VALIDATE_BOOLEAN定数とは?使い方と戻り値をわかりやすく解説

    PHPには、外部からの入力値を安全に検証するためのフィルター関数が多数用意されています。その中でもFILTER_VALIDATE_BOOLEANは、渡された値をブール値(真偽値)として評価するための定数です。filter_var()関数と組み合わせて使用することで、文字列が「真」を表す値なのか「偽」を表す値なのかを簡単に判定できます。 基本的な使い方 FILTER_VALIDATE_BOOLEANは、filter_var()関数の第2引数に指定して使用します。 <?php $var = on; var_dump(filter_var($var, FILTER_VALID