您当前的位置: 首页 > 网站编程 > PHP教程 > php判断ip黑名单程序代码实例

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

作者:不详 来源:网络 发布时间: 2014-08-09 22:41 点击:
这篇文章主要介绍了php判断ip黑名单程序代码实例,需要的朋友可以参考下 学校的新闻系统要求有些新闻只开放校内ip浏览,于是重写了一个代码来实现此功能,实现后的结果是,只要把允许访问的ip列入ip.txt这个文件中即可,同时支持c类ip,例如: ip.txt 192.168 211.67.18

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

  这篇文章主要介绍了php判断ip黑名单程序代码实例,需要的朋友可以参考下

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

  ip.txt

  192.168

  211.67.188

  211.67.191.25

  代码如下:

  代码如下:

  /*

  * ip地址黑名单、白名单

  * 判断访客地址的ip是否在ip.txt中,支持c类ip

  * By xhat

  */

  $ip = $_SERVER['REMOTE_ADDR'];

  $ipArray = preg_replace("#rn?|n#","",file('ip.txt'));

  foreach ($ipArray as $ipTest) {

  if (substr_count($ip, $ipTest) != "0") {

  echo "ok"; //执行相关命令

  die();

  }

  }

  ?>

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

  代码如下:

  <?php

  class block_ip {

  var $Block_ip = array("192.168.1.1","210.10.2.1-20","222.34.4.*");

  function __construct(){

  }

  function __destruct(){

  }

  private function makePregIP($str){

  if (strstr($str,"-")) {

  $aIP = explode(".",$str);

  foreach ($aIP as $k=>$v) {

  if (!strstr($v,"-")) {

  $preg_limit .= makePregIP($v);

  } else{

  $aipNum = explode("-",$v);

  for($i=$aipNum[0];$i<=$aipNum[1];$i++){

  $preg .=$preg?"|".$i:"[".$i;

  }

  $preg_limit .=strrpos($preg_limit,".",1)==(strlen($preg_limit)-1)?$preg."]":".".$preg."]";

  }

  }

  }else{

  $preg_limit .= $str.".";

  }

  return $preg_limit;

  }

  private function getAllBlockIP(){

  if ($this->Block_ip) {

  foreach ($this->Block_ip as $k=>$v) {

  $ipaddres = $this->makePregIP($v->start_ip);

  $ip = str_ireplace(".",".",$ipaddres);

  $ip = str_replace("*","[0-9]{1,3}",$ip);

  $ipaddres = "/".$ip."/";

  $ip_list[] = $ipaddres;

  }

  }

  return $ip_list;

  }

  public function checkIP() {

  $iptable = $this->getAllBlockIP();

  $IsJoined = true;

  //取得用户ip

  $Ip = $this->get_client_ip();

  $Ip = trim($Ip);

  //剔除黑名单中的IP区段

  if ($iptable) {

  foreach($iptable as $value) {

  if (preg_match("{$value}",$Ip)) {

  $IsJoined = false;

  break;

  }

  }

  }

  // 如果在ip黑名单中就执行如下操作

  if( !$IsJoined ){

  echo "IP Error";

  exit;

  }

  }

  private function get_client_ip(){

  if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown"))

  $ip = getenv("HTTP_CLIENT_IP");

  else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown"))

  $ip = getenv("HTTP_X_FORWARDED_FOR");

  else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown"))

  $ip = getenv("REMOTE_ADDR");

  else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown"))

  $ip = $_SERVER['REMOTE_ADDR'];

  else

  $ip = "unknown";

  return($ip);

  }

  }

  ?>

  引用片段:

  代码如下:

  $oBlock_ip = new block_ip();

  $oBlock_ip->checkIP();
分享到:
本文"php判断ip黑名单程序代码实例"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 广告合作 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4