2015-08-26 2 views
1

Я разрабатываю приложение, для которого требуется IP-адрес, который находится на моем сайте. Итак, я видел, что люди используют $_SERVER['REMOTE_ADDR']; ИлиПолучить список подключенных IP-адресов PHP

function GetIP() 
{ 
    if (isset($_SERVER)) { if (isset($_SERVER["HTTP_X_FORWARDED_FOR"])) 
    { 
     $ip = $_SERVER["HTTP_X_FORWARDED_FOR"]; 
    } 
     elseif(isset($_SERVER["HTTP_CLIENT_IP"])) 
    { 
     $ip = $_SERVER["HTTP_CLIENT_IP"]; 
    } 
    else 
    { 
     $ip = $_SERVER["REMOTE_ADDR"]; 
    } 
} 
    else 
    { 
     if (getenv('HTTP_X_FORWARDED_FOR')) 
      { 
       $ip = getenv('HTTP_X_FORWARDED_FOR'); 
      } 

     elseif (getenv('HTTP_CLIENT_IP')) 
      { 
       $ip = getenv('HTTP_CLIENT_IP'); 
      } 

     else 
      { 
       $ip = getenv('REMOTE_ADDR'); 
      } 
} 
return $ip; 
} 

Для более правильных IP-адресов. Если IP-адрес неверен в моем приложении, это не должно быть проблемой.
Но мне нужен список IP-адресов, которые подключены к серверу. Мой вопрос в том, как это возможно?
Как я могу получить все IP-адреса, подключенные к серверу?
Потому что, если я использую код, он отображает только один адрес. Я пробовал использовать в моем коде циклы, но, к сожалению, это не сработало.
Любые предложения? Мысли? Буду признателен!

С наилучшими пожеланиями,

Sjors

+2

Этот код будет работать только для отдельных устройств, подключающихся к серверу. Итак, что вам нужно сделать, это записать его в какую-то форму хранилища на сервере, в файле или в базе данных - тогда вы увидите все подключенные IP-адреса. Кроме того, у вас должен быть доступ к файлам журналов, которые уже делают это. –

+0

@GeoffAtkins Хорошо, я попробую! Большое спасибо! – Sj03rs

+0

Также имейте в виду, что 'HTTP_X_FORWARDED_FOR' и' HTTP_CLIENT_IP' (и любые другие заголовки) можно легко подделать. Только «REMOTE_ADDR» можно положиться на – Dezza

ответ

2

Существует только очень небольшое число активных соединений в любой момент времени. Браузер подключается к вашему серверу, запрашивает веб-сайт, получает ответ, , а затем отключает. Он на самом деле только мгновенно подключен к вашему серверу. Как долго пользователь оставляет страницу открытой в своем браузере, это совсем другое дело.

Если вы хотите что-то подобное, вам нужно определить, что вы подразумеваете под «подключенным». Возможно, что-то вроде «IP-адресов, которые запросили страницу за последние x минут». Вам просто нужно будет сохранить $_SERVER['REMOTE_ADDR'] посетителей в базе данных с меткой времени и получить последние x IP-адресов из этой базы данных.

+0

Да, вы правы, спасибо, что помогли мне! – Sj03rs

0

Вы можете использовать сеансы.

https://ellislab.com/codeigniter/user-guide/libraries/sessions.html

Сохранить данные сессии в таблице базы данных. И получите все IP-адреса для активных сеансов.

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