Php src get remote addr

Aus My Wiki
Version vom 1. Januar 1970, 00:33 Uhr von 212.101.202.110 (Diskussion)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

function get_remote_addr() {

       global $HTTP_SERVER_VARS;
       $GLOBAL = ( isset($HTTP_SERVER_VARS) ? $HTTP_SERVER_VARS : ( isset($_SERVER) ? $_SERVER :  ) );

       $http_x_forwarded_for = ( isset($GLOBAL["HTTP_X_FORWARDED_FOR"]) ? $GLOBAL["HTTP_X_FORWARDED_FOR"] :  );

       $remote_addr = ( isset($GLOBAL["REMOTE_ADDR"]) ? $GLOBAL["REMOTE_ADDR"] :  );

       if ( ! empty($http_x_forwarded_for)  ) {
               foreach ( explode( ',', $http_x_forwarded_for ) as $forward ) {
                       // test if $forward is an IP-address
                       if ( preg_match_all( "/([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)/", $forward, $IP )  ) {
                               // continue if $IP is a private IP-address
                               if (    ( $IP[1][0]==10 )
                                        || ( $IP[1][0]==192 && $IP[2][0]==168 )
                                        || ( $IP[1][0]==172 && $IP[2][0]>=16 && $IP[2][0]<=31 )
                                       ) {
                                       continue;
                               }
                               // return if $IP is a public IP-address
                               return $forward;
                       }
               }
       }
       return $remote_addr;

}