PHP開発では、ユーザーが提供するIPアドレスが合法かどうかを確認する必要があることがよくあります。多くのシナリオ、特にクライアント接続またはAPIリクエストを処理する場合、IP検証は重要な機能です。この記事では、get_client_version()関数とphpの内蔵filter_var()関数を使用して、IPアドレスが合法かどうかを判断する方法について説明します。
まず、クライアントのIPアドレスを取得する必要があります。通常、クライアントIPは$ _Server HyperGlobal ArrayのRemote_Addrによって取得できますが、場合によってはプロキシサーバーやロードバランサーの使用など、 Crient_Addrはクライアントの実際のIPアドレスの代わりにプロキシサーバーのIPアドレスを返す場合があります。クライアントの実際のIPアドレスを正しく取得できるようにするには、次のコードを使用できます。
function get_client_ip() {
if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
return $_SERVER['HTTP_CLIENT_IP'];
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
return $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
return $_SERVER['REMOTE_ADDR'];
}
}
get_client_ip()関数は、httpヘッダーフィールドhttp_client_ipおよびhttp_x_forwarded_forに優先順位を付けます。これは、クライアントの実際のIPアドレスを識別するためによく使用されます。これらの2つのフィールドに値がない場合、 remote_addrは返されます。つまり、デフォルトのクライアントIPです。
次に、PHPのfilter_var()関数を使用して、取得したIPアドレスが合法かどうかを確認します。 filter_var()は、渡された検証のタイプに基づいて値を確認できる非常に強力な関数です。IPアドレスの検証のために、 filter_validate_ipオプションを使用できます。
$ip = get_client_ip(); // クライアントを取得しますIP住所
if (filter_var($ip, FILTER_VALIDATE_IP)) {
echo "IP住所合法:$ip";
} else {
echo "IP住所不合法:$ip";
}
この例では、 filter_var()は、着信$ IPが有効なIPアドレスであるかどうかを確認します。 IPアドレスが合法である場合はtrueを返し、それ以外の場合はfalseを返します。
filter_validate_ipは、IPv4およびIPv6アドレスを確認します。 IPv4またはIPv6アドレスを確認する必要がある場合は、フラグを指定してタイプを制限できます。
// 確認するIPv4住所
if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) {
echo "IPv4住所合法:$ip";
} else {
echo "IPv4住所不合法:$ip";
}
// 確認するIPv6住所
if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) {
echo "IPv6住所合法:$ip";
} else {
echo "IPv6住所不合法:$ip";
}
filter_flag_ipv4またはfilter_flag_ipv6フラグを使用することにより、それぞれIPv4またはIPv6タイプのアドレスのみを検証できます。
最後に、 get_client_ip() functionとfilter_var()関数を組み合わせて完全な例を記述して、クライアントのIPアドレスが合法かどうかを判断し、それに応じて処理することができます。
// クライアントを取得しますIP住所
$ip = get_client_ip();
// 確認するIP住所是否合法
if (filter_var($ip, FILTER_VALIDATE_IP)) {
echo "IP住所合法:$ip";
} elseif (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) {
echo "IPv4住所合法:$ip";
} elseif (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) {
echo "IPv6住所合法:$ip";
} else {
echo "IP住所不合法:$ip";
}
この例では、最初に通常のIPアドレスが通常のIPでない場合は、正当なIPv4またはIPv6アドレスかどうかを確認します。それらのどれも基準を満たしていない場合、出力は「IPアドレスは違法です」です。
うまくいけば、この記事がget_client_version()とfilter_var()を使用する方法を理解して、IPアドレスが合法かどうかを確認するのに役立つことを願っています。 PHP開発についてもっと質問がある場合は、お気軽に質問してください!