php判斷IP地址是否在多個(gè)IP段內(nèi)
本文實(shí)例為大家分享了php判斷IP地址是否在多個(gè)IP段內(nèi)的具體代碼,供大家參考,具體內(nèi)容如下
IP.class.php
<?php
class Ip {
/**
* 取IP
* @return string
*/
public static function get() {
if ($_SERVER['HTTP_CLIENT_IP'] && $_SERVER['HTTP_CLIENT_IP']!='unknown') {
$ip = $_SERVER['HTTP_CLIENT_IP'];
} elseif ($_SERVER['HTTP_X_FORWARDED_FOR'] && $_SERVER['HTTP_X_FORWARDED_FOR']!='unknown') {
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
$ip = $_SERVER['REMOTE_ADDR'];
}
return $ip;
}
/**
* IP轉(zhuǎn)成整形數(shù)值
* @param string $ip IP
* @return int
*/
public static function ipToInt($ip) {
$ips = explode('.',$ip);
if (count($ips)==4) {
$int = $ips[0]*256*256*256+$ips[1]*256*256+$ips[2]*256+$ips[3]; //根據(jù)IP,a,b,c類進(jìn)行計(jì)算
} else {
//throw new Exception('ip is error');
Tool::Alert('IP地址存在錯(cuò)誤...'); //一個(gè)工具類,彈出提示信息
}
return $int;
}
/**
* 判斷IP是否在一個(gè)IP段內(nèi)
* @param string $startIp 開(kāi)始IP
* @param string $endIp 結(jié)束IP
* @param string $ip IP
* @return bool
*/
public static function isIn($startIp, $endIp, $ip) {
$start = Ip::ipToInt($startIp);
$end = Ip::ipToInt($endIp);
$ipInt = Ip::ipToInt($ip);
$result = false;
if ($ipInt>=$start && $ipInt<=$end) {
$result = true;
}
return $result;
}
}
?>
IpRang.class.php
<?php
//將不同的IP段存儲(chǔ)到數(shù)組中..
$iprang=array(
array('222.243.159.1','222.243.159.255'),
array('10.1.1.1','10.1.1.255')
);
?>
test.php
<?php
require_once 'Tool.class.php'; //工具類
require_once 'IP.class.php'; //IP類
require_once 'IpRang.class.php'; //IP段范圍
$ip = IP::get(); //獲取IP地址
$tag='1';
foreach($iprang as $key => $value){
if(!IP::isIn($value[0], $value[1], $ip)){
continue;
}else{
$tag.=$key;
}
}
if(mb_strlen($tag,'utf-8')==1){
echo "<script src='/iplookup/iplookup.php?format=js&ip=".$ip."' type='text/javascript'></script>";//調(diào)用新浪IP接口
echo "<script type='text/javascript'>alert('很遺憾,您所用的設(shè)備網(wǎng)絡(luò)不在某某范圍內(nèi)...\\n".$ip."\\n'+remote_ip_info.province+remote_ip_info.city+remote_ip_info.district); $(\"input[name='submit']\").attr(\"disabled\",true);</script>";
//彈出提示框,顯示IP地址、地址以及將提交按鈕置為不可用狀態(tài)
}
?>
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
php 網(wǎng)頁(yè)播放器用來(lái)播放在線視頻的代碼(自動(dòng)判斷并選擇視頻文件類型)
其實(shí)這里的php 視頻播放代碼基本上常見(jiàn)的視頻格式都支持,用正則匹配文件擴(kuò)展名,并根據(jù)文件擴(kuò)展名的不同調(diào)用相應(yīng)的在線播放器代碼。2010-06-06
PHP實(shí)現(xiàn)的簡(jiǎn)單適配器模式示例
這篇文章主要介紹了PHP實(shí)現(xiàn)的簡(jiǎn)單適配器模式,結(jié)合具體實(shí)例形式分析了php適配器模式的實(shí)現(xiàn)技巧與調(diào)用方法,需要的朋友可以參考下2017-06-06
PHP設(shè)計(jì)模式之原型設(shè)計(jì)模式原理與用法分析
這篇文章主要介紹了PHP設(shè)計(jì)模式之原型設(shè)計(jì)模式,簡(jiǎn)單描述了原型設(shè)計(jì)模式的概念、原理并結(jié)合實(shí)例形式分析了php原型設(shè)計(jì)模式的定義與使用方法,需要的朋友可以參考下2018-04-04
php+xml實(shí)現(xiàn)在線英文詞典查詢的方法
這篇文章主要介紹了php+xml實(shí)現(xiàn)在線英文詞典查詢的方法,通過(guò)將XML文件作數(shù)據(jù)庫(kù)實(shí)現(xiàn)查詢英文對(duì)應(yīng)漢字的功能,需要的朋友可以參考下2015-01-01
PHP字典樹(Trie樹)定義與實(shí)現(xiàn)方法示例
這篇文章主要介紹了PHP字典樹(Trie樹)定義與實(shí)現(xiàn)方法,簡(jiǎn)單描述了字典樹的概念并結(jié)合實(shí)例形式分析了字典樹的定義與使用方法,需要的朋友可以參考下2017-10-10

