Http remote address php

How to Get Remote IP Address in PHP

Getting the real remote IP address of the client can sometimes be quite tricky for PHP programmers.

Receiving the correct remote IP address has a crucial role both for tracking activity and for the security purposes.

This tutorial is aimed at helping programmers to overcome such problems. Go ahead and see how to get the real remote IP address in PHP. Often, programmers try to use $_SERVER[‘REMOTE_ADDR’] for detecting the real IP address of the client:

 function getRemoteIPAddress( ) < $ip = $_SERVER['REMOTE_ADDR']; return $ip; > ?>

However, don’t get surprised to know that with the code above, you may not receive the real IP address. In case the client uses a proxy server, the function above will not be able to help you to determine the exact IP address of the client. Luckily, there is another solution to the issue.

So, for finding the right IP address, you need to run the following function:

 function getRealIPAddr( ) < //check ip from share internet if (!empty($_SERVER['HTTP_CLIENT_IP'])) < $ip = $_SERVER['HTTP_CLIENT_IP']; > //to check ip is pass from proxy elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) < $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; > else < $ip = $_SERVER['REMOTE_ADDR']; > return $ip; > ?>

Finally, it’s done, and you can be sure to have the exact IP address of the client.

What is IP Address

The IP address is the abbreviation for the Internet Protocol Address. It is considered a numerical label that is assigned to any device linked to the computer network using the Internet Protocol as a means to communicate.

The two principal functions of the IP address are:

An IP address is specified as a 32-bit number by the Internet Protocol version 4. However, the new IPv6 version applies 128 bites for an IP address. The Internet Assigned Numbers Authority administers the space of the IP addresses. Every ISP administrator should assign an IP address to any device operating with its network.

Источник

Как получить 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.jpg

Как в 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.

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

Источник

Get User IP Address in PHP

Get User IP Address in PHP

  1. Use $_SERVER[‘REMOTE_ADDR’] to Find the User’s IP Address in PHP
  2. Use $_SERVER[‘REMOTE_ADDR’] , $_SERVER[‘HTTP_CLIENT_IP’] and $_SERVER[‘HTTP_X_FORWARDED_FOR’] to Find the User’s IP Address
  3. Use Ternary Operator and isset() Function to Find the User’s IP Address

We will introduce a way to access the user’s IP address from a server in PHP using the $_SERVER super global variable with REMOTE_ADDR as the only array element. It is used as $_SERVER[‘REMOTE_ADDR’] .

We will demonstrate another way to access the user’s IP address in PHP using the conditional expression to check whether the user’s IP addresses come from shared internet, from a proxy, or is the real IP address. This method uses array elements like HTTP_CLIENT_IP , HTTP_X_FORWARDED_FOR and REMOTE_ADDR .

We will show you a short-hand method to get the user’s IP address in PHP using the ternary operator and isset() function. This method also uses the array elements like HTTP_CLIENT_IP , HTTP_X_FORWARDED_FOR and REMOTE_ADDR in the $_SERVER super global variable.

Use $_SERVER[‘REMOTE_ADDR’] to Find the User’s IP Address in PHP

We can use the $_SERVER[‘REMOTE_ADDR’] expression to find the IP address from where the user is accessing the current page. $_SERVER is the super global variable in PHP, and it takes a variety of array elements as arguments. We use the REMOTE_ADDR as the array element in $_SERVER variable to access the client’s actual IP address. Note that $_SERVER[‘REMOTE_ADDR’] does not always give the correct IP address of the client in all cases. We will discuss the other cases below. Ensure your Server API(SAPI) is well-configured so that the above expression will return the real IP of the connection.

In the example below, the localhost is used as the server. Thus, it returns the loopback IP address. To learn about the loopback address, please refer here. Suppose the URL of the following PHP script is http://localhost/index.php . It outputs the IP address of the local machine as ::1 . ::1 is the IPv6 representation of the localhost .

For example, assign the $_SERVER[‘REMOTE_ADDR’] to a variable ip_addr . Then, print the variable using the echo .

# php 7.x  php $ip_add = $_SERVER['REMOTE_ADDR']; echo "The user's IP address is - ".$ip_add; ?> 
The user's IP address is - ::1 

Use $_SERVER[‘REMOTE_ADDR’] , $_SERVER[‘HTTP_CLIENT_IP’] and $_SERVER[‘HTTP_X_FORWARDED_FOR’] to Find the User’s IP Address

We can use the array elements of the superglobal variable $_SERVER like $_SERVER[‘REMOTE_ADDR’] , $_SERVER[‘HTTP_CLIENT_IP’] and $_SERVER[‘HTTP_X_FORWARDED_FOR’] to find the IP address of the user in PHP. Use $_SERVER[‘REMOTE_ADDR’] to find the real IP address of the user. Use $_SERVER[‘HTTP_CLIENT_IP’] to find the IP address when the user is accessing the page from shared internet. Use $_SERVER[‘HTTP_X_FORWARDED_FOR’] to find the IP address when the user uses a proxy to access the webpage. Note that headers like HTTP_X_FORWARDED_FOR and HTTP_CLIENT_IP can be spoofed as this can be set by anyone. Sometimes, they may not represent the real IP address of the client.

For Example, use the empty() function to check whether the $_SERVER[‘HTTP_CLIENT_IP’] contains something. If it contains, assign the vale in the $ip variable and print i.
Again, perform a check on $_SERVER[‘HTTP_X_FORWARDED_FOR’] accordingly and assign the value and print it if it exists. Perform similar operation on $_SERVER[‘REMOTE_ADDR’] .

The example below, $_SERVER[‘REMOTE_ADDR’] returns the IP address as the user is not using any proxies or shared internet connection. Check the PHP Manual to know more about the $_SERVER array.

#php 7.x  php if (!empty($_SERVER['HTTP_CLIENT_IP']))   echo $ip = $_SERVER['HTTP_CLIENT_IP']; > elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))   echo $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; > else   echo $ip = $_SERVER['REMOTE_ADDR']; > ?> 

Use Ternary Operator and isset() Function to Find the User’s IP Address

We can use a short-hand method to find the user’s IP address in PHP using the ternary operator. In this method, the isset() method checks whether the array contains the specified elements or the header files.

For example, use the isset() function to check whether the array contains HTTP_CLIENT_IP . If the condition is true, HTTP_CLIENT_IP is set. Then, If the condition fails, isset() function is used to check whether the array contains HTTP_X_FORWARDED_FOR . Similarly, if the condition is true, HTTP_X_FORWARDED_FOR is set, and REMOTE_ADDR is set when the condition fails.

In the example below, the client is not using a proxy or a shared internet. Therefore, the $_SERVER[‘REMOTE_ADDR’] gets executed. Please check the MSDN Web Docs to know about the ternary operator.

#php 7.x  php $ip = isset($_SERVER['HTTP_CLIENT_IP']) ? $_SERVER['HTTP_CLIENT_IP'] : isset($_SERVER['HTTP_X_FORWARDED_FOR']) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : $_SERVER['REMOTE_ADDR']; echo "The user IP Address is - ". $ip; ?> 
The user IP Address is - ::1 

Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.

Источник

Читайте также:  Python datetime get day number
Оцените статью