4

基本的に、ユーザーがテストにアクセスするための IP 範囲を指定できるようにすることを目指しています。したがって、これらの値が私のデータベースに保存されているとしましょう:

差出人: 148.197.34.112

宛先: 148.197.34.255

これらの IP アドレスを比較のために数値に変換するために使用できる関数はありますか?

したがって、明らかにユーザーがページを読み込もうとした場合...彼のIPがIP範囲内にない場合は、それらをリダイレクトします。

前もって感謝します :)

4

2 に答える 2

6

ip2long ()関数は IPv4 アドレスの仕事をします。

IPv6 アドレスを 128 ビット整数に変換するには、inet_pton()関数を使用します。

于 2011-05-05T14:08:18.160 に答える
1

値が正確にこの形式でデータベースに格納されている場合、 PHP でINET_ATON関数 (少なくとも mysql の場合) と ip2long() を使用できます。

$iplong=ip2long($ip);
$q=mysql_query("SELECT * FROM ips WHERE INET_ATON(ip_from)<='".$iplong."' AND INET_ATON(ip_to)>='".$iplong."' LIMIT 0,1");

しかしもちろん、純粋な IP ではなく、長い値を DB に格納する方がはるかに優れています。

于 2011-05-05T14:23:42.733 に答える