php IP及IP段进行访问限制的代码_php技巧

192.168.1.1 单个IP
192.168.1.* 这样代理 192.168.1.1-192.168.1-255
192.158.1.2-20 这样是代表192.158.1.2-192.158.1.20
也可以这样写 192.168.1.[1|2|3]
嘿嘿~一个方法不知道想法是否周全,拿出来大家讨论
使用
以下是引用片段:
$oBlock_ip = new block_ip();
$oBlock_ip->checkIP();
以下是引用片段:

复制代码 代码如下:

<?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);
}
}
?>

时间: 2024-08-03 01:42:13

php IP及IP段进行访问限制的代码_php技巧的相关文章

一段php加密解密的代码_php技巧

<?php   $key = "This is supposed to be a secret key !!!";   function keyED($txt,$encrypt_key)   {   $encrypt_key = md5($encrypt_key);   $ctr=0;   $tmp = "";   for ($i=0;$i<strlen($txt);$i++)   {   if ($ctr==strlen($encrypt_key)) 

Asp限制IP访问 阻止某一个IP段禁止访问本站的代码_应用技巧

复制代码 代码如下: <% ''获取访问者的地址 ip=Request.ServerVariables("REMOTE_ADDR") ''允许的IP地址段为10.0.0.0-10.68.63.255 allowip1="10.0.0.0" allowip2="10.68.10.71" response.writecheckip(ip,allowip1,allowip2) functioncheckip(ip,allowip1,allowip

Asp限制IP访问 阻止某一个IP段禁止访问本站的代码

复制代码 代码如下: <% ''获取访问者的地址 ip=Request.ServerVariables("REMOTE_ADDR") ''允许的IP地址段为10.0.0.0-10.68.63.255 allowip1="10.0.0.0" allowip2="10.68.10.71" response.writecheckip(ip,allowip1,allowip2) functioncheckip(ip,allowip1,allowip

php 获取本机外网/公网IP的代码_php技巧

大家一般都是用$_SERVER['REMOTE_ADDR']来获取用户IP, 但是如果使用了反向代理的,HTTP头中REMOTE_ADDR就不是用户的地址,反而是上一级代理的地址了. 经过我的研究有两种方法来获取用户的真实外网IP. 方法一:curl 复制代码 代码如下: function get_onlineip() { $ch = curl_init('http://www.ip138.com/ip2city.asp'); curl_setopt($ch, CURLOPT_RETURNTRA

PHP转换IP地址到真实地址的方法详解_php技巧

想要把IPv4地址转为真实的地址,肯定要参考IP数据库,商业的IP数据库存储在关系型数据库中,查询和使用都非常方便,但是成本不是个人和小公 司愿意承受的,所以简单应用的思路就是利用一些免费的IP数据库或者一些大网站提供的查询API,他们的数据量足够我们使用了.1. 利用纯真IP数据库利用本地的QQWry.Dat文件,优点是查询速度非常快,缺点是数据库文件要放在自己的空间内并且要偶尔更新数据库.时间关系废话不多说,下面是 使用这个文件的函数,如果是在WordPress里面使用这个功能,把下面的代码

php通过记录IP来防止表单重复提交方法分析_php技巧

本文实例分析了php通过记录IP来防止表单重复提交方法.分享给大家供大家参考.具体分析如下: 这个原理比较的简单就是用户第一次提交时我们记录提交用户的IP地址,这样如果用户在固定时间内再次提交表单就会提示重复提交了,这种做法通常用于在顶一下,支持一下这种应用中了,在防止数据重复提交是一个非常不好的选择. 例子,代码如下: 复制代码 代码如下: <?php session_start(); if(empty($_SESSION['ip']))//第一次写入操作,判断是否记录了IP地址,以此知道是否

PHP限制页面只能在微信自带浏览器访问的代码_php技巧

为了防止自己辛辛苦苦做的webapp被人copy,我们都想限制程序只能在微信里面浏览,虽然下面实现了这个功能,单都是小菜,没什么技术含量,懂代码的伪造下就破了.下面是PHP限制页面只能在微信自带浏览器访问的代码. 复制代码 代码如下: <!--?php <br ?--> $useragent = $_SERVER['HTTP_USER_AGENT']; if (strpos($useragent, 'MicroMessenger') === false) { echo " 非微

php数据访问之查询关键字_php技巧

本文实例为大家分享了php查询操作的实现代码,供大家参考,具体内容如下 一.一个关键字查询 主页面: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>汽车查询页面</title> </head> <body> <h1>汽车查询页面</

JavaScript实现网站访问次数统计代码_javascript技巧

作为一个网站的管理员或者说站长,都希望知道到底有多少人访问了网站,这个时候就需要有一个统计功能来满足需要,当然功能比较单一和简单,如果想要强大的统计效果,那最好还是使用现在比较成熟的统计工具,比如站长统计或者腾讯统计等等. 代码一: 代码如下: <script type="text/javascript"> var caution=false function setCookie(name,value,expires,path,domain,secure) { var cu