资源描述
php实现ip白_黑_功能_ 本文给大家分享了2个php用于实现黑白_的有用函数,分别是平安IP检测函数和猎取客户端IP函数,说明里说明的特别清晰,这里我就不多废话了。 这个是一个检测ip是否非法的php函数,适应于白_,黑_功能开发,主要场景应用于:api来源限制,访问限制等. 代码如下: /* * 平安IP检测,支持IP段检测 * param string $ip 要检测的IP * param string|array $ips 白_IP或者黑_IP * return boolean true 在白_或者黑_中,否则不在 */ function is_safe_ip($ip=,$ips=) if(!$ip) $ip = get_client_ip(); /猎取客户端IP if($ips) if(is_string($ips) /ip用, 例如白_IP:192.168.1.13,123.23.23.44,193.134.*.* $ips = explode(, $ips); else /读取后台配置 白_IP $obj = new Setting(); $ips = explode(, $obj-getConfig(whiteip); if(in_array($ip, $ips) return true; $ipregexp = implode(|, str_replace( array(*,.), array(d+,.) ,$ips); $rs = preg_match(/(.$ipregexp.)$/, $ip); if($rs) return true; return ; 猎取ip地址,这里引用thinkphp内置函数 代码如下: /应网友要求,贴出 get_client_ip() 函数 /* * 猎取客户端IP地址 * param integer $type 返回类型 0 返回IP地址 1 返回IPV4地址数字 * param boolean $adv 是否进行高级模式猎取(有可能被伪装) * return mixed */ function get_client_ip($type = 0,$adv=false) $type = $type ? 1 : 0; static $ip = NULL; if ($ip != NULL) return $ip$type; if($adv) if (isset($_SERVERHTTP_X_FORWARDED_FOR) $arr = explode(, $_SERVERHTTP_X_FORWARDED_FOR); $pos = array_search(unknown,$arr); if(false != $pos) unset($arr$pos); $ip = trim($arr0); elseif (isset($_SERVERHTTP_CLIENT_IP) $ip = $_SERVERHTTP_CLIENT_IP; elseif (isset($_SERVERREMOTE_ADDR) $ip = $_SERVERREMOTE_ADDR; elseif (isset($_SERVERREMOTE_ADDR) $ip = $_SERVERREMOTE_ADDR; / IP地址合法验证 $long = sprintf(%u,ip2long($ip); $ip = $long ? array($ip, $long) : array(0.0.0.0, 0); return $ip$type; 以上就是本文的全部内容了,盼望对大家理解php检测IP有所关心。 更多信息请查看IT技术专栏 .
展开阅读全文