Ronald Wiplinger wrote:
> I use $aa=$_SERVER["REMOTE_ADDR"];
>
> and
>
> if(($aa=="192.168.2.108") || ($aa=="192.168.2.34")) {
> $aa="61.64.101.101"; // for testing put in a public IP
> }
>
>
> However, I would like to cover all private IPs (192.168.x.x and 10.x.x.x
> and 172.??.x.x). How can I do that simple?
probably not the best or fastest way to do it but here is what I use:
function isPrivateIP($theip)
{
foreach (array("10.0.0.0/8",
"172.16.0.0/12",
"192.168.0.0/16") as $subnet)
{
list($net, $mask) = explode('/', $subnet);
if(isIPInSubnet($theip, $net, $mask))
return true;
}
return false;
}
function isIPInSubnet($ip, $net, $mask)
{
$firstpart = substr(str_pad(decbin(ip2long($net)), 32, "0", STR_PAD_LEFT)
,0 , $mask);
$firstip = substr(str_pad(decbin(ip2long($ip)), 32, "0", STR_PAD_LEFT),
0, $mask);
return (strcmp($firstpart, $firstip) == 0);
}
>
> bye
>
> Ronald
>
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php