When working in one of my project, I wanted to get client devices' IP Address. So I search on how to accurately get client IP address.
If your project is in Laravel framework, Laravel's \Request::ip()
or $request->ip()
always returns the load balancer's IP. The easiest way to get the client’s IP address is using PHP's global $_SERVER['REMOTE_ADDR']
or $_SERVER['REMOTE_HOST']
variables but sometimes this does not return the correct IP address of the client, so we have to use some other server variables to get the IP address.
The below functions I found most accurate way to get client/users IP address.
getenv()
function is used to get the value of an environment variable in PHP.
function getClientIP() {
$ip_address = '';
if (getenv('HTTP_CLIENT_IP')) {
$ip_address = getenv('HTTP_CLIENT_IP');
} elseif(getenv('HTTP_X_FORWARDED_FOR')) {
$ip_address = getenv('HTTP_X_FORWARDED_FOR');
} elseif(getenv('HTTP_X_FORWARDED')) {
$ip_address = getenv('HTTP_X_FORWARDED');
} elseif(getenv('HTTP_FORWARDED_FOR')) {
$ip_address = getenv('HTTP_FORWARDED_FOR');
} elseif(getenv('HTTP_FORWARDED')) {
$ip_address = getenv('HTTP_FORWARDED');
} elseif(getenv('REMOTE_ADDR')) {
$ip_address = getenv('REMOTE_ADDR');
} else {
$ip_address = 'UNKNOWN';
}
return $ip_address;
}
Or using $_SERVER
array that contains server variables created by the web server.
function getClientIP() {
$ip_address = '';
if (isset($_SERVER['HTTP_CLIENT_IP'])) {
$ip_address = $_SERVER['HTTP_CLIENT_IP'];
} elseif (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ip_address = $_SERVER['HTTP_X_FORWARDED_FOR'];
} elseif (isset($_SERVER['HTTP_X_FORWARDED'])) {
$ip_address = $_SERVER['HTTP_X_FORWARDED'];
} elseif (isset($_SERVER['HTTP_FORWARDED_FOR'])) {
$ip_address = $_SERVER['HTTP_FORWARDED_FOR'];
} elseif (isset($_SERVER['HTTP_FORWARDED'])) {
$ip_address = $_SERVER['HTTP_FORWARDED'];
} elseif (isset($_SERVER['REMOTE_ADDR'])) {
$ip_address = $_SERVER['REMOTE_ADDR'];
} else {
$ip_address = 'UNKNOWN';
}
return $ip_address;
}
I hope you like this article and it will help in your work.
Hi, My name is Harsukh Makwana. i have been work with many programming language like php, python, javascript, node, react, anguler, etc.. since last 5 year. if you have any issue or want me hire then contact me on [email protected]
timedropper jQuery UI timepicker example
Sometimes, you may need to add time inpu...How to Sleep Before Continuing in JavaScript
Use the setTimeout() Method You can s...What is arrow function in Javascript
An arrow function is short function expr...How to Insert and fetch fullcalendar events from mysql database ?
Hello to all, welcome to therichpost.com...Create REST API using Django Rest Framework
There are multiple ways to indite an API...