Ejemplo n.º 1
0
 /**
  * Internal function to mask portions of the visitor IP address
  *
  * @param string $ip IP address in network address format
  * @param int $maskLength Number of octets to reset
  * @return string
  */
 public static function applyIPMask($ip, $maskLength)
 {
     // IPv4 or mapped IPv4 in IPv6
     if (IP::isIPv4($ip)) {
         $i = strlen($ip);
         if ($maskLength > $i) {
             $maskLength = $i;
         }
         while ($maskLength-- > 0) {
             $ip[--$i] = chr(0);
         }
     } else {
         $masks = array('ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff', 'ffff:ffff:ffff:ffff::', 'ffff:ffff:ffff:0000::', 'ffff:ff00:0000:0000::');
         $ip = $ip & pack('a16', inet_pton($masks[$maskLength]));
     }
     return $ip;
 }