PDA

Просмотр полной версии : Cтатистика посещений вашего ресурса.


IIAHbI4
11.03.2007, 04:17
Доступ к лог-файлам сайта есть не везде, а хочется все-таки просмотреть логи, проблема решаема - пишем скрипт для создания своих лог-файлов.
Для хранения мы будем использовать обчыный текстовый файл и сессию.


<?
session_start();
if(!session_is_registered('counted')){
$agent = $_SERVER['HTTP_USER_AGENT'];
$uri = $_SERVER['REQUEST_URI'];
$user = $_SERVER['PHP_AUTH_USER'];
$ip = $_SERVER['REMOTE_ADDR'];
$ref = $_SERVER['HTTP_REFERER'];
$dtime = date('r');

if($ref == ""){
$ref = "None";
}
if($user == ""){
$user = "None";
}

$entry_line = "$dtime - IP: $ip | Agent: $agent | URL: $uri | Referrer: $ref | Username: $user n";
$fp = fopen("logs.txt", "a");
fputs($fp, $entry_line);
fclose($fp);
session_register('counted');
}
?>

Теперь давайте пройдемся по отдельным частям кода:


Здесь мы запускаем механизм сессий, эта строчка просто необходима, ведь в представленном примере мы будем вести учет пользователей, "не учтенных" сессией.
session_start();


Здесь мы проверяем существует ли сессия с именем 'counted', если нет, то выполняем идущий за этой строкой код.
if(!session_is_registered('counted')){




А вот уже в этом куске кода мы объявляем список переменных, которые в свою очередь обращаются к глобальным переменным.

$agent = $_SERVER['HTTP_USER_AGENT'];
$uri = $_SERVER['REQUEST_URI'];
$user = $_SERVER['PHP_AUTH_USER'];
$ip = $_SERVER['REMOTE_ADDR'];
$ref = $_SERVER['HTTP_REFERER'];
$dtime = date('r');



Если человек пришел на ваш сайт, просто набрав в адресной строке браузера ваш адрес и он не зарегистрирован, то в этом случае в логе будет записано "нет".
$_SERVER['HTTP_USER_AGENT'] - расскажет нам в логе о том, каким браузером и ОС пользуется юзер.
$_SERVER['REQUEST_URI'] - поведает о том, с какой страницы была произведена запись, можно также составить статистику наиболее популярных для входа страниц.
$_SERVER['PHP_AUTH_USER'] - работает, только, если у вас на сайте есть регистрация и пользовательские аккуанты - запишется имя пользователя.
$_SERVER['REMOTE_ADDR'] - ну здесь по-моему все понятно - определяется ip пользователя
$_SERVER['HTTP_REFERER'] - очень удобная вещь - с помощью нее мы узнаем откуда пришел пользователь, и узнаем о сайтах, поместивших на нас ссылку.
date('r') - записывается время в стандартно формате.
f(!$ref){
$ref = "Нет";
}
if(!$user){
$user = "Нет";
}


В последнем куске кода - мы записываем соответствующую информацию в файл logs.txt. Все скрипт статистики готов!
$entry_line = "$dtime - IP: $ip | Agent: $agent | URL: $uri | Referrer: $ref | Username: $user n";
$fp = fopen("logs.txt", "a");
fputs($fp, $entry_line);
fclose($fp);
session_register('counted');

Это мой дебют,надеюсь кому небудь понадобится =)

IIAHbI4
11.03.2007, 04:34
Спустя некоторое время:
Я вот подумал...можно ещё и без использования сессии записывать информацию в лог файл,но если посещаемость вашего ресурса высокая,то этот варьянт вам не совсем подойдёт,хотя он предоставит вам пооолную картину посещения вашего ресурса.

<?
$agent = $_SERVER['HTTP_USER_AGENT'];
$uri = $_SERVER['REQUEST_URI'];
$user = $_SERVER['PHP_AUTH_USER'];
$ip = $_SERVER['REMOTE_ADDR'];
$ref = $_SERVER['HTTP_REFERER'];
$dtime = date('r');

if($ref == ""){
$ref = "None";
}
if($user == ""){
$user = "None";
}

$entry_line = "$dtime - IP: $ip | Agent: $agent | URL: $uri | Referrer: $ref | Username: $user n";
$fp = fopen("logs.txt", "a");
fputs($fp, $entry_line);
fclose($fp);
?>

mR_LiNK[deface_0nl
11.03.2007, 05:24
Эт все конечно хорошо, появился новый велосепид...не пропадет..+

имхо лучше обычный счетчик поставить, spylog к примеру, предоставляет детальную инфу, в анализируемом виде..

IIAHbI4
11.03.2007, 05:27
не велосипед, spylog не даст тебе такого результата как к примеру второй код.
(в плане того, сколько раз и когда именно юзер с одим сешэн ИД заходил на твой ресурс)

mR_LiNK[deface_0nl
11.03.2007, 05:36
не велосипед, spylog не даст тебе такого результата как к примеру второй код.
(в плане того, сколько раз и когда именно юзер с одим сешэн ИД заходил на твой ресурс)

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

зы::платный пакет spylog дает более чем достаточно..

IIAHbI4
11.03.2007, 05:39
согласен, но я смысла не вижу в учете такой мелочи....
так жизнь то из мелочей состоит =)...ладно чтот флуд.

blackybr
11.03.2007, 11:42
Ага.. многократное нажатие ф5 будет добавлять в лог одно и тоже

IIAHbI4
11.03.2007, 14:02
Ага.. многократное нажатие ф5 будет добавлять в лог одно и тоже
это только при использовании 2ого скрипта,вот скажем ты,когда заходиш на ресурс ,то тупо сидиш и на Ф5 жмакаеш? =)

Talisman
11.03.2007, 14:05
а масенький досер заведет кучу сессий ))) и твой лог файл раздует фтп...

IIAHbI4
11.03.2007, 14:27
а масенький досер заведет кучу сессий ))) и твой лог файл раздует фтп...
ну ты же не досиш каждый ресурс на который заходиш...ну ей богу...

GreenBear
11.03.2007, 14:30
Причем тут это? Просто надо делать на все случаи жизни, а не надейтся на порядочность людей. Вот и все.