Взимане на IPv6 и обработката в база данни

Pro_Lamer4e

Registered
добър ден, как мога да преработа този код за да работи и с ipv6, тъй като четох в нета но нещо не разбрах принципа на Ipv6

Код:
function validip($ip) {
	if (!empty($ip) && $ip == long2ip(ip2long($ip)))
	{
		// reserved IANA IPv4 addresses
		// http://www.iana.org/assignments/ipv4-address-space
		$reserved_ips = array (
				array('0.0.0.0','2.255.255.255'),
				array('10.0.0.0','10.255.255.255'),
				array('127.0.0.0','127.255.255.255'),
				array('169.254.0.0','169.254.255.255'),
				array('172.16.0.0','172.31.255.255'),
				array('192.0.2.0','192.0.2.255'),
				array('192.168.0.0','192.168.255.255'),
				array('255.255.255.0','255.255.255.255')
		);

		foreach ($reserved_ips as $r) {
				$min = ip2long($r[0]);
				$max = ip2long($r[1]);
				if ((ip2long($ip) >= $min) && (ip2long($ip) <= $max)) return false;
		}
		return true;
	}
	else return false;
}

Код:
function getip() {
	$ip = getenv('REMOTE_ADDR');
	return $ip;
}

Реално проблема се показва тук в системата за бан на потребител

Код:
	$ip = getip();
	$userip = ip2long($ip);

	if ($user_ipbans) {
	$res = @sql_query("SELECT * FROM bans WHERE $userip >= 'ip' AND $userip <= 'ip' ") or sqlerror(__FILE__, __LINE__); 
       if (mysql_num_rows($res) > 0) { 
       $comment = @mysql_fetch_assoc($res); 
       $comment = $comment["comment"]; 
       include_once ("disabled.php"); 
       die; 
       } 
       }
 
Виж си форматирането на IP :)


https://www.google.bg/search?ei=HCZfW_2AAsj-6ASrvJ_4Bw&q=ip2long+ip6&oq=ip2long+ip6&gs_l=psy-ab.3..0i203k1j0j0i22i30k1l2.4322.4966.0.5072.4.4.0.0.0.0.191.502.0j3.3.0....0...1.1.64.psy-ab..1.3.502...0i22i10i30k1.0.etW6vDBOajY
 

Горе