Информация о посетителях сайта PDF Печать E-mail

Язык PHP предоставляет хорошие возможности для учета и классификации обращений к скриптам пользователями. Анализируя переменные окружения, передающиеся при каждом запросе, можно выполнять определенные действия. Например, если к скрипту разрешены только POST-запросы, то с помощью переменной REQUEST_METHOD можно отсеивать все другие типы запросов: GET, PUT, HEAD и т.д. Или, например, разрешить доступ к скрипту только браузерам, содержащим в своем идентификаторе слово MSIE.

Далее представлены варианты получения информации о запросах пользователей, которые можно использовать, например, как лог обращений к страницам. Можно, конечно, исследовать логи веб-сервера, но не все хостеры позволяют смотреть логи.

Для получения информации о посетителях сайта используется очень полезная функция getenv().

Код программы Результат выполнения 
date("d.m.Y",time()).' '.date("H:i:s",time()) 21.04.2009 11:56:51 
getenv("REQUEST_URI") /?pg=art&id=php-people-information 
getenv("HTTP_REFERER") http://www.gcmsite.ru/?pg=art&sub=php-programming 
getenv("QUERY_STRING") pg=art&id=php-people-information 
getenv("REMOTE_ADDR") 85.238.96.91 
gethostbyaddr(getenv("REMOTE_ADDR")) planetah-96-91.tenet.odessa.ua 
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") Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 
getenv("HTTP_FROM")  
getenv("REQUEST_METHOD") GET 
getenv("HTTP_ACCEPT_ENCODING") gzip,deflate 
getenv("HTTP_ACCEPT_LANGUAGE") ru,en-us;q=0.7,en;q=0.3 
getenv("HTTP_CONNECTION") keep-alive 
getenv("REMOTE_PORT") 2890 

ВАЖНОЕ ЗАМЕЧАНИЕ

Никогда не используйте вывод (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{ не разрешено }  

Автор Шаров Евгений

По материалам сайта: http://www.gcmsite.ru/