function getIp(){
static $realip = null;//第一次调用赋值null
if($realip !== null){
//如果$realip不等于null,则说明不是第一次调用,直接返回ip值
return $realip;
}
if(getenv( 'REMOTE_ADDR')){
$realip = getenv( 'REMOTE_ADDR');
}else if (getenv( 'HTTP_CLIENT_IP')){
$realip = getenv('HTTP_CLIENT_IP');
}else if(getenv('HTTP_X_FORWARDED_FOR')){
$realip = getenv('HTTP_X_FORWARDED_FOR');
}
return $realip;
}
获取ip成功后,存入数据库中,数据库中的ip字段为int型,而获取的ip为string类型
先使用ip2long()转化为int型,但转化后为负数,再使用sprintf('%u',参数2)转换为无符号的整形
sprintf('$u',ip2long(getIp()));