پیدا کردن IP واقعی کاربر PHP

آیا شما هم برای پیدا کردن IP کاربر از  این روش استفاده می کنید :

$IP = $_SERVER[‘REMOTE_ADDR’];

اما شاید برای شما جالب باشد که این روش در همه حالات IP حقیقی کاربر را نشان نمی دهد
فانکشن زیر میتونه کمک کنه شما IP واقعی کاربر رو بدست بیاورید :

function getRealIpAddr() {

  if ( !empty ( $_SERVER[‘HTTP_X_REAL_IP’] ) )    //آخرین درخواست کننده
{    

 $ip = $_SERVER[‘HTTP_X_REAL_IP‘];
 }
elseif ( !empty ( $_SERVER[‘HTTP_CLIENT_IP’] ) )    //بررسی آی پی از محل اشتراک گذاری اینترنت
{
$ip = $_SERVER[HTTP_CLIENT_IP] ;
}
elseif (
!empty ( $_SERVER[‘HTTP_X_FORWARDED_FOR’] ) )    //بررسی آی پی از خروجی یک پراکسی
{
$ip = $_SERVER[
HTTP_X_FORWARDED_FOR] ;
}
else    {
$ip = $_SERVER[
REMOTE_ADDR] ;
}
return $ip ;
}


 و یا با switch و case می توان نوشت :

function getRealIpAddr() {
switch(true){
case ( !empty ( $_SERVER[‘HTTP_X_REAL_IP’] ) ) : return $_SERVER[‘HTTP_X_REAL_IP’] ;
case ( !empty ( $_SERVER[‘HTTP_CLIENT_IP’] ) ) : return $_SERVER[‘HTTP_CLIENT_IP’] ;
case ( !empty ( $_SERVER[‘HTTP_X_FORWARDED_FOR’] ) ) : return $_SERVER[‘HTTP_X_FORWARDED_FOR’] ;
default : return $_SERVER[‘REMOTE_ADDR’] ;
}
}

$IP = getRealIpAddr() ;


در php نسخه ۵٫۳  یا بالاتر با getenv :

$ip = getenv(‘HTTP_X_REAL_IP’) ?:
getenv(‘HTTP_CLIENT_IP’) ?:
getenv( ‘HTTP_X_FORWARDED_FOR’ ) ?:
getenv( ‘HTTP_X_FORWARDED’ ) ?:
getenv( ‘REMOTE_ADDR’ ) ;

اشتراک گذاری این صفحه
همچنین:  عملگرها در php و اولویت آنها

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.