Drupal - вывод IP-адреса посетителя

Версия для печатиОтправить другуPDF version

Решил как-то на днях реализовать вывод IP-адреса посетителя в отдельном блоке. Пригодится данная фича может в самых разных случаях. Например:

  • необходимо узнать у простого пользователя, какой его внешний IP-адрес - просто отправляем его на сайт, и пусть любым доступным способом передает данные нам;
  • чужая сеть, и выход в Internet реализован через NAT - узнаем, в какой IP-адрес NAT-ятся наши запросы;
  • у провадера динамически выдаются IP-адреса - необязательно писать каждый раз команды в консоли...

Тоесть, вывод IP-адреса посетителя можно использовать в качестве инструмента. Потратив 5 минут на поиск готового модуля для Drupal, решил не заморачиваться и создать блок самостоятельно. Тем более, что ничего сложного нету - одна строка кода.

Итак, идем в Управление -> Конструкция сайта -> Блоки на закладку "Добавить блок". Заполняем следующие поля:

  • Описание блока. Например: Вывод IP-адреса посетителя.
  • Заголовок блока. Например: Ваш IP-адрес:
  • Текст блока. (если используете какой-то WYSIWYG-редактор, рекомендую его отключить для этого поля). Код очень простой - всего в одну строку:

    <?=@$_SERVER['REMOTE_ADDR']?>
     

  •  Формат ввода. PHP code 

Остальные поля - на усмотрение. Сохраняем блок и задаем его размещение. В моем случае - это правая колонка.

Также даный код можно использовать на страницах сайта в любом месте для вывода IP посетителя. Код будет работать на любом сайте с поддержкой PHP.

 

Ваша оценка: Нет Средняя: 5 (6 голосов)

Re: Drupal - вывод IP-адреса посетителя

Спасибо, пригодилось. Заметил маленький недочет. Заработало, когда убрал "@"

<?=$_SERVER['REMOTE_ADDR']?>

Re: Drupal - вывод IP-адреса посетителя

Оператор управления ошибками

PHP поддерживает один оператор управления ошибками: знак (@). В случае, если он предшествует какому-либо выражению в PHP-коде, любые сообщения об ошибках, генерируемые этим выражением, будут проигнорированы.

Если вы установили собственную функцию обработки ошибок с помощью set_error_handler(), то она все равно будет вызвана, однако, если внутри этой функции будет вызвана функция error_reporting(), то она вернет 0, если функция, вызвавшая данную ошибку, была подавлена с помощью @.

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

Оператор @ работает только с выражениями. Есть простое правило: если что-то возвращает значение, значит вы можете использовать перед ним оператор @. Например, вы можете использовать @ перед именем переменной, произвольной функцией или вызовом include, константой и так далее. В то же время вы не можете использовать этот оператор перед определением функции или класса, условными конструкциями, такими как if, foreach и т.д.

Re: Drupal - вывод IP-адреса посетителя

я сделал ещё и резольв и браузер ;)

<!--IP--><p class="rtecenter">
Ваш IP-адрес: <?=@$_SERVER['REMOTE_ADDR']?><br />
Резольвится: <?=@gethostbyaddr ($_SERVER['REMOTE_ADDR'])?><br />
Браузер: <?php
if ( stristr($_SERVER['HTTP_USER_AGENT'], 'Firefox') ) echo 'firefox';
elseif ( stristr($_SERVER['HTTP_USER_AGENT'], 'Chrome') ) echo 'chrome';
elseif ( stristr($_SERVER['HTTP_USER_AGENT'], 'Safari') ) echo 'safari';
elseif ( stristr($_SERVER['HTTP_USER_AGENT'], 'Opera') ) echo 'opera';
elseif ( stristr($_SERVER['HTTP_USER_AGENT'], 'MSIE 8.0') ) echo 'ie8';
elseif ( stristr($_SERVER['HTTP_USER_AGENT'], 'MSIE 7.0') ) echo 'ie7';
elseif ( stristr($_SERVER['HTTP_USER_AGENT'], 'MSIE 6.0') ) echo 'ie6';
?></p>
<!--IP-->

Re: Drupal - вывод IP-адреса посетителя

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

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".

Вставай, Україно!

Литература

Опыт растет прямо пропорционально выведенному из строя оборудованию.