PHP: информация о посетителях сайта
Язык PHP предоставляет хорошие возможности для учета и классификации
обращений к скриптам пользователями. Анализируя переменные окружения,
передающиеся при каждом запросе, можно выполнять определенные действия.
Например, если к скрипту разрешены только POST-запросы, то с помощью
переменной REQUEST_METHOD можно отсеивать все другие типы запросов:
GET, PUT, HEAD и т.д.
Или, например, разрешить доступ к скрипту только браузерам, содержащим
в своем идентификаторе слово MSIE.
Далее представлены варианты получения информации о запросах пользователей,
которые можно использовать, например, как лог обращений к страницам.
Можно, конечно, исследовать логи веб-сервера, но не все хостеры позволяют
смотреть логи.
Для получения информации о посетителях сайта используется очень полезная функция getenv().
| Код программы |
Результат выполнения |
| date("d.m.Y",time()).' '.date("H:i:s",time()) |
09.09.2010 04:33:04 |
| getenv("REQUEST_URI") |
/?pg=art&id=php-people-information |
| getenv("HTTP_REFERER") |
|
| getenv("QUERY_STRING") |
pg=art&id=php-people-information |
| getenv("REMOTE_ADDR") |
38.107.191.110 |
| gethostbyaddr(getenv("REMOTE_ADDR")) |
38.107.191.110 |
| getenv("HTTP_X_FORWARDED") |
|
| getenv("HTTP_X_FORWARDED_FOR") |
|
| getenv("HTTP_VIA") |
|
| getenv("HTTP_X_COMING_FROM") |
|
| getenv("HTTP_COMING_FROM") |
|
| getenv("HTTP_USER_AGENT") |
CCBot/1.0 (+http://www.commoncrawl.org/bot.html) |
| getenv("HTTP_FROM") |
|
| getenv("REQUEST_METHOD") |
GET |
| getenv("HTTP_ACCEPT_ENCODING") |
gzip |
| getenv("HTTP_ACCEPT_LANGUAGE") |
en-us,en;q=0.5 |
| getenv("HTTP_CONNECTION") |
close |
| getenv("REMOTE_PORT") |
27837 |
ВАЖНОЕ ЗАМЕЧАНИЕ
Никогда не используйте вывод (echo, print) переменных, не проверив их на
безопасность. Проверить переменные можно, например, с помощью такой функции:
function my_s($s){ return trim(stripslashes(str_replace("`",'',
str_replace("\n",' ',str_replace("|",'_',
str_replace("..",'',
htmlspecialchars($s,ENT_QUOTES))))))); }
Функция записывается в одну строку и выполняется очень быстро.
Для наглядности можно разделить функцию
my_s() на отдельные
подфункции, но это приведет к замедлению её работы.
Использование функции my_s():
<?php echo my_s(getenv("REQUEST_METHOD")); ?>
Разрешаем работу скрипта только с браузерами типа MSIE:
if (strstr(getenv("HTTP_USER_AGENT"), "MSIE")){ разрешено }
else{ не разрешено }
Разрешаем работу скрипта только по методу POST:
if (getenv("REQUEST_METHOD")=='POST')){ разрешено }
else{ не разрешено }
школа цигун россия
|
|
Автор, разработчик: Шаров Евгений (gcmsite@yandex.ru)
(c) 2000-2009 GCM-Site - системное и веб-программирование
Цитирование материалов сайта возможно только при наличии гиперссылки
|