Php get ip address client

How to Get the Client IP Address in PHP

Frequently, it is necessary to gather the clients’ IP addresses for tracking activity or for some security purposes.

Using the $_SERVER Variable

The $_SERVER variable provides a simple and efficient way of getting user IP addresses. It encompasses an array, providing the server and environment-related information in PHP.

Let’s begin with the simplest way: applying the $_SERVER[‘REMOTE_ADDR’] . It returns the user IP addresses. It can be run in the following way:

 echo 'User IP - ' . $_SERVER['REMOTE_ADDR']; ?>

But note that, sometimes, it may return a wrong IP address of the user. The reason is using Proxy.

So, in such a situation, to get the correct IP address of the user, it is recommended to act like this:

 function getUserIpAddr( ) < if (!empty($_SERVER['HTTP_CLIENT_IP'])) < //ip from share internet $ip = $_SERVER['HTTP_CLIENT_IP']; > elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) < //ip pass from proxy $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; > else < $ip = $_SERVER['REMOTE_ADDR']; > return $ip; > echo 'User Real IP - ' . getUserIpAddr(); ?>

Getting IP Addresses of the Website

Also, it is possible to receive the IP address of any website by the URL. All you need to do is passing the website URL within the gethostbyname() function, like this:

 $ip_address = gethostbyname("www.google.com"); echo "IP Address of Google is - " . $ip_address; echo "
"
; $ip_address = gethostbyname("www.javatpoint.com"); echo "IP Address of javaTpoint is - " . $ip_address; ?>

Defining PHP Superglobals

Superglobals are variables that are always accessible no matter what scope they have. They can also be accessed from any class, function without doing something special.

$_SERVER also belongs to the super global variables.It is capable of holding information about paths, headers, as well as script locations. The entities inside that array are generated by the webserver. There are also other superglobal variables such as $GLOBALS, $_REQUEST, $_POST, $_GET, $_FILES, $_ENV, $_COOKIE, and $_SESSION .

Источник

Как получить IP через PHP для сервера и пользователя

php-uznat-ip-adres

Доброго времени суток 🙂

На практике часто возникает необходимость узнать IP в PHP скрипте сайта. Причём, это может быть как IP адрес сервера, так и посетителя, производящего действия на вашем ресурсе.

Причём, последний иногда может пользоваться сайтом не напрямую, а по каким-то причинам подключаясь к нему через прокси сервер. Этот случай усложняет жизнь тем, что для подключения используется изменённый IP адрес.

Но, к счастью, в PHP получить IP адрес как клиента, так и самого сайта в этом случае более, чем реально. Причём, для этого не потребуются никакие специальные библиотеки и средства движков сайтов. Всё необходимое уже есть в самом PHP «на борту».

Нам осталось только пользоваться 🙂

Как в PHP узнать IP сервера

Вся необходимая информация об IP сервера, да и пользователя тоже, в PHP доступна через суперглобальный массив $_SERVER. Однако, помимо перечисленных данных он содержит ещё много различной информации.

В этой ситуации отыскать нужное становится непростой задачей, для решения которой нужно знать назначение переменных массива.

В частности, для того, чтобы в PHP определить IP адрес сервера, в коде нужно прописать следующую конструкцию:

Данный PHP код позволит вам вывести на экран IP адрес сервера, на котором он запускается. Это же значение будет и IP адресом сайта, если он вам где-нибудь понадобится.

Как в PHP получить IP посетителя

Для определения в PHP IP пользователя, с которого он подключается к вашему сайту, мы воспользуемся тем же массивом $_SERVER. В данном случае нас будет интересовать переменная REMOTE_ADDR, содержимое которой можно вывести на экран привычным способом:

Однако, в случаях использования клиентом прокси соединений, т.е. когда при подключении трафик идёт через сторонний прокси сервер, данная переменная будет содержать IP адрес не посетителя, а прокси сервера.

Чтобы узнать в PHP IP адрес посетителя в данном случае, нужно воспользоваться другим способом.

http://cccp-blog.com/wp-includes/images/banners/templatemonster/banner_content_mobile.png

Как в PHP определить IP пользователя, использующего прокси

Первым делом, в PHP IP посетителя при использовании прокси можно попробовать получить следующим способом:

Данный код можно найти практически во всех PHP скриптах, определяющих реальный IP посетителя. Однако, мало кто может объяснить, что хранится в данной переменной.

Если прописать данный код у себя в сайте на локальном сервере, то вы вообще получите пустое значение, т.е. данной переменной в массиве $_SERVER у вас не окажется. И это не удивительно, т.к. в HTTP_CLIENT_IP хранится глобальный IP пользователя, т.е. его адрес в сети Интернет.

И, самое главное, что на это значение не влияет прокси соединение, т.е. здесь вы найдёте реальный IP пользователя, а не его прокси сервера.

Если по каким-то причинам данная переменная будет отсутствовать в PHP $_SERVER, то можете попробовать узнать IP адрес клиента ещё и таким способом:

В данную переменную прокси сервера сами помещают реальный IP посетителя.

Таким образом, для того, чтобы в PHP узнать IP клиента гарантированно, можно использовать следующую конструкцию:

Данный скрипт выведет на экран значение переменной $ip, в которую при использовании прокси соединения будет записан глобальный IP посетителя. Если же его не будет найдено в PHP $_SERVER, то скрипт попытается узнать IP пользователя, записанный самим прокси сервером.

Если же ни одной переменной не будет присвоено значение, то с большой вероятностью можно предположить, что посетитель не использует прокси либо прокси сервер не предоставляет реальный IP посетителя. В этом случае, чтобы получить хоть какое-то значение IP, мы берём его из REMOTE_ADDR. Но, с высокой долей вероятности, это значение будет IP адресом прокси сервера (благо, что ими не пользуется абсолютно каждый клиент сайтов).

Для проверки существования значений переменных я, как видите, решил воспользоваться PHP функцией filter_var, которая фильтрует переменные с применением определённого фильтра (шаблона), которым в данном случае является FILTER_VALIDATE_IP.

В завершение хочу подытожить, что описанным выше способом, несмотря на все тщательные проверки всех возможных серверных переменных PHP, определить IP пользователя с использованием прокси всё равно не получится на 100%.

Дело в том, что IP адрес клиента предоставляют только определённый тип прокси серверов, которые называют «прозрачными». Как правило, это открытые службы.

Библиотека курсов

Если же ваш пользователь решил скрыть свой реальный IP с помощью коммерческого непрозрачного прокси, то шансы узнать его реальный адрес стремятся к нулю. Благо, что процент таковых клиентов совсем невелик, так что приведённая финальная версия скрипта поможет вам в большинстве случаев.

Оставляйте свои отзывы в комментариях — что понравилось, что нет, может быть, о чём-то следовало бы рассказать поподробнее… Мне интересно любое ваше мнение.

P.S.: если вам нужен сайт либо необходимо внести правки на существующий, но для этого нет времени и желания, могу предложить свои услуги.

Более 5 лет опыта профессиональной разработки сайтов. Работа с PHP, OpenCart, WordPress, Laravel, Yii, MySQL, PostgreSQL, JavaScript, React, Angular и другими технологиями web-разработки.

Опыт разработки проектов различного уровня: лендинги, корпоративные сайты, Интернет-магазины, CRM, порталы. В том числе поддержка и разработка HighLoad проектов. Присылайте ваши заявки на email cccpblogcom@gmail.com.

И с друзьями не забудьте поделиться 😉

Источник

How to Get the Client IP Address using PHP

Get the Client IP Address using PHP

In this tutorial, I will show you how to get the client IP Address using PHP. There are various occasions when you need to get and store the client IP address in database using PHP.

Or you may also need to perform any other actions based on user’s IP address, such as blocking user for multiple invalid login attempts using IP address and others.

Readers also read: Best VPN for Web Developers to change your IP address.

Ways to Get Client IP Address in PHP

There are multiple ways to get the client IP address in PHP, I will share more than 1 methods with you.

Method 01:

PHP provides a built in super global variable $_SERVER that holds quite useful information in it. We can easily use this $_SERVER variable to get the client IP address in PHP.

The below PHP code will return the IP address of a user in PHP.

However, the above code may give you incorrect IP address if the user is using the Proxy. But we have another solution that will resolve this issue.

Method 02:

You can use this custom PHP function which will give you the actual IP address of user in PHP even if the user is using the proxy.

This function also checks if user is using the proxy and proxy can have multiple IP addresses then it will pick the last IP address which is the most reliable IP address.

else if(!empty($_SERVER['HTTP_X_FORWARDED_FOR']))< //Check if the proxy is used for IP/IPs // Split if multiple IP addresses exist and get the last IP address if (strpos($_SERVER['HTTP_X_FORWARDED_FOR'], ',') !== false) < $multiple_ips = explode(",", $_SERVER['HTTP_X_FORWARDED_FOR']); $ip_address = trim(end($multiple_ips)); >else < $ip_address = $_SERVER['HTTP_X_FORWARDED_FOR']; >>else if(!empty($_SERVER['HTTP_X_FORWARDED']))< $ip_address = $_SERVER['HTTP_X_FORWARDED']; >else if(!empty($_SERVER['HTTP_FORWARDED_FOR']))< $ip_address = $_SERVER['HTTP_FORWARDED_FOR']; >else if(!empty($_SERVER['HTTP_FORWARDED']))< $ip_address = $_SERVER['HTTP_FORWARDED']; >else < $ip_address = $_SERVER['REMOTE_ADDR']; >return $ip_address; > // Print client IP address $ip_address = get_ip_address(); echo "Your IP Address is: ". $ip_address; ?>

Congrats, you have successfully got the IP address of your user or client.

You can easily use this function and get the client IP address using PHP. For demo purpose, I have printed the client IP address.

Validate IP Address

It is an additional measure to check if IP address is valid or not, like if you are using the above PHP function on localhost, it will give you ::1 instead of actual IP address.

And there are some chances that you get the invalid IP from some users, so it is recommended to validate the IP address before using or saving it.

The below PHP function will check the valid IP address 4 and IP address 6. It will also validate that IP address does not fall in the range of private and reserved networks.

 return true; > if(validate_ip($ip_address))< echo "
IP Address is Valid.
"; >else< echo "
Invalid IP Address!
"; > ?>

Privacy Concern

IP address of a client is a private information and you should explicitly mention in your privacy policy that you can collecting the client IP address and mention the reason along with it.

Conclusion

I hope by now you know how to get the client IP Address using PHP. This simple PHP function will help you to get the client IP address in your web application. This is very common task in PHP applications.

If you found this tutorial helpful, share it with your friends and developers group.

I spent several hours to create this tutorial, if you want to say thanks so like my page on Facebook, Twitter and share it.

Facebook Official Page: All PHP Tricks

Twitter Official Page: All PHP Tricks

Javed Ur Rehman is a passionate blogger and web developer, he loves to share web development tutorials and blogging tips. He usually writes about HTML, CSS, JavaScript, Jquery, Ajax, PHP and MySQL.

Источник

Читайте также:  Web music player php
Оцените статью