phpはIPアドレスが複数のIPセグメント内にあるかどうかを判断する。
本論文の例では、phpがIPアドレスが複数のIPセグメント内の具体的なコードであるかどうかを共有しています。
IP.class.php
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
* @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]; // IP,a,b,c
} else {
//throw new Exception('ip is error');
Tool::Alert('IP ...'); // ,
}
return $int;
}
/**
* IP IP
* @param string $startIp IP
* @param string $endIp 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 ..
$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>";// IP
echo "<script type='text/javascript'>alert(' , ...\
".$ip."\
'+remote_ip_info.province+remote_ip_info.city+remote_ip_info.district); $(\"input[name='submit']\").attr(\"disabled\",true);</script>";
// , IP 、
}
?>
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。