Локальный ip адрес php

Содержание
  1. How To Get or Detect The Local IP Address in PHP
  2. Finding Local IP address using PHP
  3. PHP, как получить локальный IP-адрес системы
  4. Из CLI
  5. PHP PHP> = 5.3.0 Это старый пост, но получите его с этим: Найденный на другом сайте, не удаляйте команду trim, потому что иначе вы получите имя компьютера. BACKTICKS (Специальные кавычки): он работает, потому что PHP будет пытаться запускать все, что находится между этими «специальными кавычками» (backticks) в качестве команды оболочки, и возвращает полученный результат. gethostbyname(trim(`hostname`)); Очень похож (но гораздо эффективнее), чем на: $exec = exec("hostname"); //the "hostname" is a valid command in both windows and linux $hostname = trim($exec); //remove any spaces before and after $ip = gethostbyname($hostname); //resolves the hostname using local hosts resolver or DNS попробуйте это (если ваш сервер Linux): $command="/sbin/ifconfig eth0 | grep 'inet addr:' | cut -d: -f2 | awk '< print $1>'"; $localIP = exec ($command); echo $localIP; Зависит от того, что вы подразумеваете под местным: Если по локальному вы имеете в виду адрес сервера / системы, выполняющей PHP-код, то есть еще две возможности для обсуждения. Если PHP запускается через веб-сервер, вы можете получить адрес сервера, прочитав $_SERVER[‘SERVER_ADDR’] . Если PHP запускается через интерфейс командной строки, вам, скорее всего, придется выполнить оболочку ipconfig (Windows) / ifconfig (* nix) и вывести адрес grep. Если по локальному вы имеете в виду удаленный адрес посетителя веб-сайта, но не внешний адрес IP (так как вы конкретно сказали 192. *), то вам не повезло. Весь смысл маршрутизации NAT заключается в том, чтобы скрыть этот адрес. Вы не можете идентифицировать локальные адреса отдельных компьютеров за IP-адресом, но есть некоторые трюки (пользовательский агент, возможно, MAC-адрес), которые могут помочь различать, если есть несколько компьютеров, получающих доступ с одного и того же IP-адреса. IP-адрес по умолчанию для локальной машины можно получить следующим образом: $sock = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP); socket_connect($sock, "8.8.8.8", 53); socket_getsockname($sock, $name); // $name passed by reference $localAddr = $name; Поскольку это UDP, socket_connect не выходит в сеть. Он назначает локальный адрес и порт для сокета. Это позволяет получить локальный адрес. Это решение работает без сетевого трафика, DNS или выполнения команд. Он может не работать, если нет маршрута к 8.8.8.8 (например, у вас нет подключения к Интернету). hostname (1) может указать IP-адрес: hostname —ip-address , или, как говорит человек, лучше использовать hostname —all-ip-addresses Вы можете попробовать это как обычный пользователь в CLI на хосте Linux: function get_local_ipv4() < $out = split(PHP_EOL,shell_exec("/sbin/ifconfig")); $local_addrs = array(); $ifname = 'unknown'; foreach($out as $str) < $matches = array(); if(preg_match('/^([a-z0-9]+)(:\d)?(\s)+Link/',$str,$matches)) < $ifname = $matches[1]; if(strlen($matches[2])>0) < $ifname .= $matches[2]; >> elseif(preg_match('/inet addr:((?:253|21\d|1\d\d|1\d|\d)(?:[.](?:252|24\d|1\d\d|3\d|\d)))\s/',$str,$matches)) < $local_addrs[$ifname] = $matches[1]; >> return $local_addrs; > $addrs = get_local_ipv4(); var_export($addrs); array ( 'eth0' => '192.168.1.1', 'eth0:0' => '192.168.2.1', 'lo' => '127.0.0.1', 'vboxnet0' => '192.168.56.1', ) Я воспользовался этим вопросом для серверной php (работает от терминала Linux) Я взорвал «ifconfig» и сузил его до 192.168.xx IP-адреса. echo explode(' ',explode(':',explode('inet addr',explode('wlan0',trim(`ifconfig`))[1])[1])[1])[0]; И, конечно, измените «wlan0» на желаемое сетевое устройство. $ localIP = gethostbyname (trim (exec («hostname»))); Я попробовал в Windows pc и работал, а также думал, что Will будет работать с Linux. Если вы находитесь в среде dev на OS X, подключенной через Wi-Fi: echo exec("/sbin/ifconfig en1 | grep 'inet ' | cut -d ' ' -f2"); PHP_SELF Возвращает имя файла текущего скрипта с PHP_SELF пути к корню SERVER_PROTOCOL Возвращает имя и версию протокола, запрашиваемого страницей REQUEST_METHOD Возвращает метод запроса, используемый для доступа к странице DOCUMENT_ROOT Возвращает корневой каталог, в котором выполняется текущий скрипт $localIP = gethostbyname(trim('hostname')); Самый простой способ получить локальный IP-адрес с помощью $_SERVER[‘SERVER_ADDR’] $ip_address = $_SERVER['SERVER_ADDR'] IP-адрес сервера отображения PHP Источник Как получить IP через PHP для сервера и пользователя Доброго времени суток 🙂 На практике часто возникает необходимость узнать 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 адрес посетителя в данном случае, нужно воспользоваться другим способом. Как в 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. И с друзьями не забудьте поделиться 😉 Источник
  6. PHP> = 5.3.0
  7. Как получить IP через PHP для сервера и пользователя
  8. Как в PHP узнать IP сервера
  9. Как в PHP получить IP посетителя
  10. Как в PHP определить IP пользователя, использующего прокси
Читайте также:  Как установить класс php

How To Get or Detect The Local IP Address in PHP

Hello developers, today I am here to provide you with what you are exactly looking for.

In maximum cases developers need to find out the IP address of a user, But if you are developing something for your organization which is bounded by your organization only. Then you will find computers connected to a network and if all the machines are on the same network then the machines can work as a workgroup connected with a network.
So why I am writing this post? what’s the need to find out local IP address?
Actually one of my friends recently asked for my help to find out someone’s local address.

He has a webpage for all the employees and that is served by a local host. But one of his employees is posting unnecessary things on that page. So it is his responsibility to detect the person by finding his local IP address so that he can speak to him personally.
So I guess you are aware of why sometimes its require to find local IP address of a machine.

There are many ways to get the local IP address but I will put here the easiest methods to get us the result.

Finding Local IP address using PHP

if you are using PHP version 5.3 or above then this is possibly the best way to get the Local IP Address.

Another way provided below

gethostbyname : Get the IPv4 address corresponding to a given Internet host name.

This is also a cool way to find the local IP address of a device connected to a network.

Читайте также:  Абсолютная ссылка

This will also give you the IP address which is local.

Actually here exec used to execute a given command and even you can avoid trim to get the same output.

I will suggest you, leave blank in “hostname” and run on your own and give us a response in the comment section below.
Get visitors country and city in PHP using freegeoip API

Источник

PHP, как получить локальный IP-адрес системы

Мне нужно получить локальный IP-адрес компьютера, например 192. * …. Возможно ли это с PHP?

Мне нужен IP-адрес системы, запускающей скрипт, но мне не нужен внешний IP-адрес, мне нужен адрес локальной сетевой карты.

Из CLI

PHP

PHP> = 5.3.0

Это старый пост, но получите его с этим:

Найденный на другом сайте, не удаляйте команду trim, потому что иначе вы получите имя компьютера.

BACKTICKS (Специальные кавычки): он работает, потому что PHP будет пытаться запускать все, что находится между этими «специальными кавычками» (backticks) в качестве команды оболочки, и возвращает полученный результат.

gethostbyname(trim(`hostname`)); 

Очень похож (но гораздо эффективнее), чем на:

$exec = exec("hostname"); //the "hostname" is a valid command in both windows and linux $hostname = trim($exec); //remove any spaces before and after $ip = gethostbyname($hostname); //resolves the hostname using local hosts resolver or DNS 

попробуйте это (если ваш сервер Linux):

$command="/sbin/ifconfig eth0 | grep 'inet addr:' | cut -d: -f2 | awk '< print $1>'"; $localIP = exec ($command); echo $localIP; 

Зависит от того, что вы подразумеваете под местным:

Если по локальному вы имеете в виду адрес сервера / системы, выполняющей PHP-код, то есть еще две возможности для обсуждения. Если PHP запускается через веб-сервер, вы можете получить адрес сервера, прочитав $_SERVER[‘SERVER_ADDR’] . Если PHP запускается через интерфейс командной строки, вам, скорее всего, придется выполнить оболочку ipconfig (Windows) / ifconfig (* nix) и вывести адрес grep.

Если по локальному вы имеете в виду удаленный адрес посетителя веб-сайта, но не внешний адрес IP (так как вы конкретно сказали 192. *), то вам не повезло. Весь смысл маршрутизации NAT заключается в том, чтобы скрыть этот адрес. Вы не можете идентифицировать локальные адреса отдельных компьютеров за IP-адресом, но есть некоторые трюки (пользовательский агент, возможно, MAC-адрес), которые могут помочь различать, если есть несколько компьютеров, получающих доступ с одного и того же IP-адреса.

IP-адрес по умолчанию для локальной машины можно получить следующим образом:

$sock = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP); socket_connect($sock, "8.8.8.8", 53); socket_getsockname($sock, $name); // $name passed by reference $localAddr = $name; 

Поскольку это UDP, socket_connect не выходит в сеть. Он назначает локальный адрес и порт для сокета. Это позволяет получить локальный адрес.

Это решение работает без сетевого трафика, DNS или выполнения команд.

Он может не работать, если нет маршрута к 8.8.8.8 (например, у вас нет подключения к Интернету).

hostname (1) может указать IP-адрес: hostname —ip-address , или, как говорит человек, лучше использовать hostname —all-ip-addresses

Вы можете попробовать это как обычный пользователь в CLI на хосте Linux:

function get_local_ipv4() < $out = split(PHP_EOL,shell_exec("/sbin/ifconfig")); $local_addrs = array(); $ifname = 'unknown'; foreach($out as $str) < $matches = array(); if(preg_match('/^([a-z0-9]+)(:\d)?(\s)+Link/',$str,$matches)) < $ifname = $matches[1]; if(strlen($matches[2])>0) < $ifname .= $matches[2]; >> elseif(preg_match('/inet addr:((?:253|21\d|1\d\d|1\d|\d)(?:[.](?:252|24\d|1\d\d|3\d|\d)))\s/',$str,$matches)) < $local_addrs[$ifname] = $matches[1]; >> return $local_addrs; > $addrs = get_local_ipv4(); var_export($addrs); 
array ( 'eth0' => '192.168.1.1', 'eth0:0' => '192.168.2.1', 'lo' => '127.0.0.1', 'vboxnet0' => '192.168.56.1', ) 

Я воспользовался этим вопросом для серверной php (работает от терминала Linux)

Я взорвал «ifconfig» и сузил его до 192.168.xx IP-адреса.

echo explode(' ',explode(':',explode('inet addr',explode('wlan0',trim(`ifconfig`))[1])[1])[1])[0]; 

И, конечно, измените «wlan0» на желаемое сетевое устройство.

$ localIP = gethostbyname (trim (exec («hostname»)));

Я попробовал в Windows pc и работал, а также думал, что Will будет работать с Linux.

Если вы находитесь в среде dev на OS X, подключенной через Wi-Fi:

echo exec("/sbin/ifconfig en1 | grep 'inet ' | cut -d ' ' -f2"); 
  • PHP_SELF Возвращает имя файла текущего скрипта с PHP_SELF пути к корню
  • SERVER_PROTOCOL Возвращает имя и версию протокола, запрашиваемого страницей
  • REQUEST_METHOD Возвращает метод запроса, используемый для доступа к странице
  • DOCUMENT_ROOT Возвращает корневой каталог, в котором выполняется текущий скрипт
$localIP = gethostbyname(trim('hostname')); 

Самый простой способ получить локальный IP-адрес с помощью $_SERVER[‘SERVER_ADDR’]

$ip_address = $_SERVER['SERVER_ADDR'] 

IP-адрес сервера отображения PHP

Источник

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

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

Источник

Оцените статью