ip存储数据类型

$ip = '255.255.255.255';
$ip = '24.23.24.253';
//看看是否为一个合法的ip
function ip($ip_address) {
	$ip = explode('.', $ip_address);
	foreach ($ip as $v) {
		if ($v > 255) {
			return FALSE;
		}
	}
	return TRUE;
}
//进行算法计算
function ipToInt($ip) {
	$iparr = explode('.', $ip);
	$num = 0;
	$count = count($iparr);
	for ($i = 0; $i < $count; ++$i) {
		$num += intval($iparr[$i]) * pow(256, $count - ($i + 1));
	}
	return $num;
}
//进行判断
if (ip($ip)) {
	echo $ip, '
'; $ip_int = ipToInt($ip); echo $ip_int . '
'; echo long2ip($ip_int); } else { echo '你的ip不合法'; } /*不少人把ip写存入数据库中用ip2long转换存放int类型的字段中, 但是,在不同的系统平台上,ip2long函数得到的值是不同的, 因此可能造成在从数据库中读出数据逆转ip时用long2ip得到的ip与原ip不符合 如果是mysql可以使用mysql系统函数INET_ATON与INET_NTOA解决,要么自己写函数,但是不建议用mysql中的函数因为影响效率 通过这样的方法是不是就好了吗 直接存储int(11) unsigned 不就ok了么 */

你可能感兴趣的:(mysql,ip存储数据类型)