• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

php判断ip黑名单程序代码实例_php实例

php 搞代码 3年前 (2022-01-26) 38次浏览 已收录 0个评论

学校的新闻系统要求有些新闻只开放校内ip浏览,于是重写了一个代码来实现此功能,实现后的结果是,只要把允许访问的ip列入ip.txt这个文件中即可,同时支持c类ip,例如:

ip.txt
192.168
211.67.188
211.67.191.25
代码如下:

/*<BR>* ip地址黑名单、白名单<BR>* 判断访客地址的ip是否在ip.txt中,支持c类ip<BR>* By xhat<BR>*/</P><P>$ip = $_SERVER['REMOTE_ADDR'];<BR>$ipArray = preg_replace("#rn?|n#","",file('ip.txt'));<BR>foreach ($ipArray as $ipTest) {<BR>if (substr_count($ip, $ipTest) != "0") {<BR>echo "ok"; //执行相关命令<BR>die();<BR>}<BR>}</P><P>?><BR>

上面大家可以使用代码来骗过了,下面代码进行升级

<?php <BR>class block_ip { <BR>var $Block_ip = array("192.168.1.1","210.10.2.1-20","222.34.4.*"); <BR>function __construct(){ <BR>} <BR>function __destruct(){ <BR>} <BR>private function makePregIP($str){ <BR>if (strstr($str,"-")) { <BR>$aIP = explode(".",$str); <BR>foreach ($aIP as $k=>$v) { <BR>if (!strstr($v,"-")) { <BR>$preg_limit .= makePregIP($v); <BR>} else{ <BR>$aipNum = explode("-",$v); <BR>for($i=$aipNum[0];$i<=$aipNum[1];$i++){ <BR>$preg .=$preg?"|".$i:"[".$i; <BR>} <BR>$preg_limit .=strrpos($preg_limit,".",1)==(strlen($preg_limit)-1)?$preg."]":".".$preg."]"; <BR>} <BR>} <BR>}else{ <BR>$preg_limit .= $str."."; <BR>} <BR>return $preg_limit; <BR>} <BR>private function getAllBlockIP(){ <BR>if ($this->Block_ip) { <BR>foreach ($this->Block_ip as $k=>$v) { <BR>$ipaddres = $this->makePregIP($v->start_ip); <BR>$ip = str_ireplace(".",".",$ipaddres); <BR>$ip = str_replace("*","[0-9]{1,3}",$ip); <BR>$ipaddres = "/".$ip."/"; <BR>$ip_list[] = $ipaddres; <BR>} <BR>} <BR>return $ip_list; <BR>} <BR>public function checkIP() { <BR>$iptable = $this->getAllBlockIP(); <BR>$IsJoined = true; <BR>//取得用户ip <BR>$Ip = $this->get_client_ip(); <BR>$Ip = trim($Ip); <BR>//剔除黑名单中的IP区段 <BR>if ($iptable) { <BR>foreach($iptable as $value) { <BR>if (preg_match("{$value}",$Ip)) { <BR>$IsJoined = false; <BR>break; <BR>} <BR>} <BR>} <BR>// 如果在ip黑名单中就执行如下操作 <BR>if( !$IsJoined ){ <BR>echo "IP Error"; <BR>exit; <BR>} <BR>} <BR>private function get_client_ip(){ <BR>if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "<b style="color:transparent">来&源gao@dai!ma.com搞$代^码%网</b><img>搞gaodaima代码</img>unknown")) <BR>$ip = getenv("HTTP_CLIENT_IP"); <BR>else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown")) <BR>$ip = getenv("HTTP_X_FORWARDED_FOR"); <BR>else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown")) <BR>$ip = getenv("REMOTE_ADDR"); <BR>else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown")) <BR>$ip = $_SERVER['REMOTE_ADDR']; <BR>else <BR>$ip = "unknown"; <BR>return($ip); <BR>} <BR>} <BR>?><BR>

引用片段:

$oBlock_ip = new block_ip(); <BR>$oBlock_ip->checkIP();<BR>

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:php判断ip黑名单程序代码实例_php实例
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址