PHP: Özel IP kontrolü

İstemcinin IP’sinin özel IP (yerel, vpn, vs.) olup olmadığı kontrol etmek için aşağıdaki fonksiyon kullanılabilir.

/**
 * Checks if an ip is private (local ip addr., etc) or not.
 * @param string $ip
 * @param string $ipAsPriv ips which are detected as priv.
 * @return bool
 */
function isPrivateIp($ip='',$ipAsPriv=array('','127.0.0.1'))
{
	if(in_array($ip,$ipAsPriv))
		return true;

	return !filter_var($ip,FILTER_VALIDATE_IP,FILTER_FLAG_NO_PRIV_RANGE);
}

Örnek:

$ips=array('127.0.0.1','192.168.10.2','78.16.45.76','172.16.33.11');

foreach($ips as $ip)
        echo $ip.' :'.(isPrivateIp($ip) ? 'private' : 'not private').'<br>';

Örnek çıktıları:

127.0.0.1 :private
192.168.10.2 :private
78.16.45.76 :not private
172.16.33.11 :private