fhiiqm/test/ip_intern_test.php
changeset 42 cfc409017ba8
equal deleted inserted replaced
41:9c668cd391fa 42:cfc409017ba8
       
     1 <?php
       
     2 
       
     3 /**
       
     4  * @author Bettina Schwarzer, Fritz-Haber-Institut
       
     5  * @copyright 01/2014
       
     6  */
       
     7 
       
     8 function isintern($ip)
       
     9 {
       
    10         if (!preg_match("/^141\.14\./", $ip) &&
       
    11             !preg_match("/^172\.(1[6-9]|2[0-9]|31)\./", $ip) &&
       
    12             !preg_match("/^10\.0\./", $ip)) {
       
    13                 echo "extern: ".$ip. "<br />";
       
    14                 return false;
       
    15         }
       
    16         else 
       
    17         {
       
    18             echo "intern: ".$ip. "<br />";
       
    19             return false;
       
    20         }
       
    21 }
       
    22 
       
    23 isintern($_SERVER["REMOTE_ADDR"]);
       
    24 echo ", ".ip2long($_SERVER["REMOTE_ADDR"]);
       
    25 echo "<br /><br />";
       
    26 foreach(array('171.15.255.555',
       
    27               '172.16.0.0', 
       
    28               '172.24.3.3', 
       
    29               '172.16.3.3',
       
    30               '172.18.3.3',
       
    31               '172.24.3.3',
       
    32               '172.31.255.255',
       
    33               '172.32.0.0',
       
    34               '10.0.1.128',
       
    35               '123.123.123.123',
       
    36               '8.8.8.8',
       
    37               '141.14.127.255',
       
    38               '141.14.128.0',
       
    39               '141.14.143.255',
       
    40               '141.14.144.0',
       
    41               '141.14.141.141') as $ip) { 
       
    42                 isintern($ip);
       
    43                 }
       
    44 echo "<br /><br />";
       
    45 
       
    46 function islocal($ip) {
       
    47   foreach(array('172.16.0.0/12', '141.14.128.0/20','10.0.0.0/8') as $net) {
       
    48     list($subnet, $mask) = explode('/', $net);
       
    49     if ((ip2long($ip) & ~((1 << (32 - $mask)) - 1) ) == ip2long($subnet)) return true;
       
    50   }
       
    51   return false;
       
    52 }
       
    53 
       
    54 
       
    55 
       
    56 foreach(array('171.15.255.555',
       
    57               '172.16.0.0', 
       
    58               '172.24.3.3', 
       
    59               '172.16.3.3',
       
    60               '172.18.3.3',
       
    61               '172.24.3.3',
       
    62               '172.31.255.255',
       
    63               '172.32.0.0',
       
    64               '10.0.1.128',
       
    65               '123.123.123.123',
       
    66               '8.8.8.8',
       
    67               '141.14.127.255',
       
    68               '141.14.128.0',
       
    69               '141.14.143.255',
       
    70               '141.14.144.0',
       
    71               '141.14.141.141') as $ip) {
       
    72 
       
    73   if (islocal($ip)) echo "$ip local<br>\n";
       
    74   else echo "$ip extern<br>\n";
       
    75 }
       
    76 
       
    77 ?>