phpはIPアドレスが複数のIPセグメント内にあるかどうかを判断する。

3030 ワード

本論文の例では、phpがIPアドレスが複数のIPセグメント内の具体的なコードであるかどうかを共有しています。
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 、 } ?>
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。