Skip to main content
Improve the code
Source Link

This function should work as expected

function Get_User_Ipget_user_ip() { $IP// =List false; of server variables that ifmay (getenv('HTTP_CLIENT_IP')) contain the client's IP {address   $IP$ip_sources = getenv('HTTP_CLIENT_IP');  }[ else if(getenv('HTTP_X_FORWARDED_FOR'))  {'HTTP_CLIENT_IP', $IP = getenv('HTTP_X_FORWARDED_FOR');, }  else if(getenv('HTTP_X_FORWARDED')),   {  'HTTP_FORWARDED_FOR',  $IP = getenv('HTTP_X_FORWARDED');  }'HTTP_FORWARDED', else if(getenv('HTTP_FORWARDED_FOR'))  {'REMOTE_ADDR' ];  $IP$ip = getenv('HTTP_FORWARDED_FOR');false;  } else// if(getenv('HTTP_FORWARDED')) Iterate over each source { to find a valid IP address  $IP =foreach getenv('HTTP_FORWARDED'$ip_sources as $source); { }  else if (getenv('REMOTE_ADDR'$source)) { {  $IP$ip = getenv('REMOTE_ADDR'$source); }   //If HTTP_X_FORWARDED_FORBreak ==the serverloop ipif a valid IP is found if((($IP) && ($IP == getenv('SERVER_ADDR')) && (getenv('REMOTE_ADDR')) || if (!filter_var($IP$ip, FILTER_VALIDATE_IP))))  { $IP = getenv('REMOTE_ADDR');  }  if($IP)break; {  if(!filter_var($IP, FILTER_VALIDATE_IP))} {}   }  $IP// =Final false; validation: ensure the IP is not the server's }IP } if ($ip && ($ip else == getenv('SERVER_ADDR') || !filter_var($ip, FILTER_VALIDATE_IP))) { $IP$ip = false; }   return $IP;$ip; } 

This function should work as expected

function Get_User_Ip() { $IP = false;  if (getenv('HTTP_CLIENT_IP'))  {   $IP = getenv('HTTP_CLIENT_IP');  } else if(getenv('HTTP_X_FORWARDED_FOR'))  { $IP = getenv('HTTP_X_FORWARDED_FOR'); }  else if(getenv('HTTP_X_FORWARDED'))   {  $IP = getenv('HTTP_X_FORWARDED');  } else if(getenv('HTTP_FORWARDED_FOR'))  { $IP = getenv('HTTP_FORWARDED_FOR');  } else if(getenv('HTTP_FORWARDED'))  {  $IP = getenv('HTTP_FORWARDED'); }  else if(getenv('REMOTE_ADDR')) {  $IP = getenv('REMOTE_ADDR'); }  //If HTTP_X_FORWARDED_FOR == server ip if((($IP) && ($IP == getenv('SERVER_ADDR')) && (getenv('REMOTE_ADDR')) || (!filter_var($IP, FILTER_VALIDATE_IP))))  { $IP = getenv('REMOTE_ADDR');  }  if($IP) {  if(!filter_var($IP, FILTER_VALIDATE_IP)) {   $IP = false;  } }  else  { $IP = false; } return $IP; } 

This function should work as expected

function get_user_ip() { // List of server variables that may contain the client's IP address $ip_sources = [ 'HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'HTTP_X_FORWARDED', 'HTTP_FORWARDED_FOR',  'HTTP_FORWARDED', 'REMOTE_ADDR' ];  $ip = false; // Iterate over each source to find a valid IP address  foreach ($ip_sources as $source) { if (getenv($source)) { $ip = getenv($source);   // Break the loop if a valid IP is found if (filter_var($ip, FILTER_VALIDATE_IP)) { break; } } }  // Final validation: ensure the IP is not the server's IP if ($ip && ($ip == getenv('SERVER_ADDR') || !filter_var($ip, FILTER_VALIDATE_IP))) { $ip = false; }   return $ip; } 
Source Link

This function should work as expected

function Get_User_Ip() { $IP = false; if (getenv('HTTP_CLIENT_IP')) { $IP = getenv('HTTP_CLIENT_IP'); } else if(getenv('HTTP_X_FORWARDED_FOR')) { $IP = getenv('HTTP_X_FORWARDED_FOR'); } else if(getenv('HTTP_X_FORWARDED')) { $IP = getenv('HTTP_X_FORWARDED'); } else if(getenv('HTTP_FORWARDED_FOR')) { $IP = getenv('HTTP_FORWARDED_FOR'); } else if(getenv('HTTP_FORWARDED')) { $IP = getenv('HTTP_FORWARDED'); } else if(getenv('REMOTE_ADDR')) { $IP = getenv('REMOTE_ADDR'); } //If HTTP_X_FORWARDED_FOR == server ip if((($IP) && ($IP == getenv('SERVER_ADDR')) && (getenv('REMOTE_ADDR')) || (!filter_var($IP, FILTER_VALIDATE_IP)))) { $IP = getenv('REMOTE_ADDR'); } if($IP) { if(!filter_var($IP, FILTER_VALIDATE_IP)) { $IP = false; } } else { $IP = false; } return $IP; }