Titre: Récupérer l’ip du visiteur
Date: –
Language: PHP
Description: Ce code permet de récupérer l’ip du visiteur. Ce code n’est pas de moi, il appartient à PhpMyAdmin.
<?php function PMA_getIp( ) { global $REMOTE_ADDR; global $HTTP_X_FORWARDED_FOR, $HTTP_X_FORWARDED, $HTTP_FORWARDED_FOR, $HTTP_FORWARDED; global $HTTP_VIA, $HTTP_X_COMING_FROM, $HTTP_COMING_FROM; // Get some server/environment variables values if( empty( $REMOTE_ADDR ) && PMA_getenv( 'REMOTE_ADDR' ) ) $REMOTE_ADDR = PMA_getenv( 'REMOTE_ADDR' ); if ( empty( $HTTP_X_FORWARDED_FOR ) && PMA_getenv( 'HTTP_X_FORWARDED_FOR' ) ) $HTTP_X_FORWARDED_FOR = PMA_getenv( 'HTTP_X_FORWARDED_FOR' ); if( empty( $HTTP_X_FORWARDED ) && PMA_getenv( 'HTTP_X_FORWARDED' ) ) $HTTP_X_FORWARDED = PMA_getenv( 'HTTP_X_FORWARDED' ); if ( empty( $HTTP_FORWARDED_FOR ) && PMA_getenv( 'HTTP_FORWARDED_FOR' ) ) $HTTP_FORWARDED_FOR = PMA_getenv( 'HTTP_FORWARDED_FOR' ); if ( empty( $HTTP_FORWARDED ) && PMA_getenv( 'HTTP_FORWARDED' ) ) $HTTP_FORWARDED = PMA_getenv( 'HTTP_FORWARDED' ); if ( empty( $HTTP_VIA ) && PMA_getenv( 'HTTP_VIA' ) ) $HTTP_VIA = PMA_getenv( 'HTTP_VIA' ); if ( empty( $HTTP_X_COMING_FROM ) && PMA_getenv( 'HTTP_X_COMING_FROM' ) ) $HTTP_X_COMING_FROM = PMA_getenv( 'HTTP_X_COMING_FROM' ); if ( empty( $HTTP_COMING_FROM ) && PMA_getenv( 'HTTP_COMING_FROM' ) ) $HTTP_COMING_FROM = PMA_getenv( 'HTTP_COMING_FROM' ); // Gets the default ip sent by the user if ( !empty( $REMOTE_ADDR ) ) $direct_ip = $REMOTE_ADDR; // Gets the proxy ip sent by the user $proxy_ip = ''; if ( !empty( $HTTP_X_FORWARDED_FOR ) ) $proxy_ip = $HTTP_X_FORWARDED_FOR; elseif ( !empty( $HTTP_X_FORWARDED ) ) $proxy_ip = $HTTP_X_FORWARDED; elseif ( !empty( $HTTP_FORWARDED_FOR ) ) $proxy_ip = $HTTP_FORWARDED_FOR; elseif ( !empty( $HTTP_FORWARDED ) ) $proxy_ip = $HTTP_FORWARDED; elseif ( !empty( $HTTP_VIA ) ) $proxy_ip = $HTTP_VIA; elseif ( !empty( $HTTP_X_COMING_FROM ) ) $proxy_ip = $HTTP_X_COMING_FROM; elseif ( !empty( $HTTP_COMING_FROM ) ) $proxy_ip = $HTTP_COMING_FROM; // end if... elseif... // Returns the true IP if it has been found, else FALSE if ( empty( $proxy_ip ) ) return $direct_ip; // True IP without proxy else { $is_ip = preg_match( '|^( [0-9]{1,3}\. ){3,3}[0-9]{1,3}|', $proxy_ip, $regs ); if ( $is_ip && ( count( $regs ) > 0 ) ) return $regs[0]; // True IP behind a proxy else { // Can't define IP: there is a proxy but we don't have // information about the true IP return FALSE; } } // end if... else... } // end of the 'PMA_getIp( )' function /** * trys to find the value for the given environment vriable name * * searchs in $_SERVER, $_ENV than trys getenv( ) and apache_getenv( ) * in this order * * @param string $var_name variable name * @return string value of $var or empty string */ function PMA_getenv( $var_name ) { if ( isset( $_SERVER[$var_name] ) ) return $_SERVER[$var_name]; elseif ( isset( $_ENV[$var_name] ) ) return $_ENV[$var_name]; elseif ( getenv( $var_name ) ) return getenv( $var_name ); elseif ( function_exists( 'apache_getenv' ) && apache_getenv( $var_name, true ) ) return apache_getenv( $var_name, true ); return ''; } ?>
Laisser un commentaire