<?PHP / * * *获取IP地址的方法 * / // 1: 関数getip(){ 静的 $ IP = '' ; $ IP = $ _SERVER [ 'REMOTE_ADDR' ]; もし(ISSET($ _SERVER [ 'HTTP_CDN_SRC_IP' ])){ $ IP = $ _SERVER [ 'HTTP_CDN_SRC_IP' ]。 } ELSEIF(ISSET($ _SERVER [ 'HTTP_CLIENT_IP'])&& するpreg_match( '/^([0-9]{1,3}\.){3}[0-9]{1,3}$/'、$ _SERVER [ 'HTTP_CLIENT_IP'])){ $ IP = $ _SERVER [ 'HTTP_CLIENT_IP' ]。 } ELSEIF(ISSET($ _SERVER [ 'HTTP_X_FORWARDED_FOR'])AND preg_match_all( '#\ D {1,3} \ \ D {1,3} \ \ D {1,3} \ \ D {1、 3} #S'、$ _SERVER [ 'HTTP_X_FORWARDED_FOR']、$マッチ)){ foreachの($マッチ [0] AS の$ XIP ){ 場合(!するpreg_match( 'は#^(10 | 172 \ 0.16 | 192 \。 。168)\#」、$ XIP )){ $ IP = $ XIP 。 休憩; } } } を返す $ IPを。 } エコー getip() '<時間>' ; // 2: するerror_reporting(E_ERROR | E_WARNING | E_PARSE )。 もし($ HTTP_SERVER_VARS [ "HTTP_X_FORWARDED_FOR" ]){ $ IP = $ HTTP_SERVER_VARS [ "HTTP_X_FORWARDED_FOR" ]。 } ELSEIF($ HTTP_SERVER_VARS [ "HTTP_CLIENT_IP" ]){ $ IP = $ HTTP_SERVER_VARS [ "HTTP_CLIENT_IP" ]。 } elseifを($ HTTP_SERVER_VARS [ "REMOTE_ADDR" ]){ $ IP = $ HTTP_SERVER_VARS [ "REMOTE_ADDR" ]。 } ELSEIF(のgetenv( "HTTP_X_FORWARDED_FOR" )){ $ IP = のgetenv( "HTTP_X_FORWARDED_FOR" )。 } ELSEIF(のgetenv( "HTTP_CLIENT_IP" )){ $ IP = のgetenv( "HTTP_CLIENT_IP" )。 } ELSEIF(のgetenv( "REMOTE_ADDR" )){ $ IP = のgetenv( "REMOTE_ADDR" )。 $ IP = "不明" 。 } エコー $ IP '<時間>'。; // 3: $ IP = $ _SERVER [ 'REMOTE_ADDR' ]; エコー $ IP。 '<時間>' ; // 4: $ user_ipは =($ _SERVER [ "HTTP_VIA"])?$ _SERVER [ "HTTP_X_FORWARDED_FOR"]:$ _SERVER [ "REMOTE_ADDR" ]; $ user_ipは =($ user_ipは)?$ user_ipは:$ _SERVER [ "REMOTE_ADDR" ]; エコー $ user_ipは。 '<時間>' ; // 5: get_real_ip(){ $ IP = 偽; もし(!空($ _SERVER [ "HTTP_CLIENT_IP" ])){ $ IP = $ _SERVER [ "HTTP_CLIENT_IP" ]; } もし(!空($ _SERVER [ 'HTTP_X_FORWARDED_FOR' ])){ $ IPS = 爆発( "" $ _SERVER [ 'HTTP_X_FORWARDED_FOR' ])。 もし($ IP ){ するarray_unshift($ IPS、$ IP)。$ IP = FALSE ; } のために($ I = 0; $ I < 数($ IPS); $ I ++ ){ もし!(eregi( "^(10 | 172 \ 0.16 | 192 \ 0.168)\"、$ IPS [ $ I ])){ $ IP = $ IPS [ $ I ]。 休憩; } } } リターン($ IP?$ IP:$ _SERVER [ 'REMOTE_ADDR' ]); } エコー get_real_ip() '<時間>'; //6: もし(のgetenv( 'HTTP_CLIENT_IP' )){ $ onlineip = のgetenv( 'HTTP_CLIENT_IP' )。 } ELSEIF(のgetenv( 'HTTP_X_FORWARDED_FOR' )){ $ onlineip = のgetenv( 'HTTP_X_FORWARDED_FOR' )。 } ELSEIF(のgetenv( 'REMOTE_ADDR' )){ $ onlineip = のgetenv( 'REMOTE_ADDR' )。 } 他{ $ onlineip = $ HTTP_SERVER_VARS [ 'REMOTE_ADDR' ]。 } エコー $ onlineip。 '<時間>' ; ?>
訪問者がプロキシまたはその他の状況を使用している場合は、IPは、実際のクライアントIPではないかもしれない達成しました