Вернуться на предыдущую страницу

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

Хотел бы представить немного доработанную версию элементарного скрипта, написанного на языке PHP.

Автор его выложил в виде:

 

$er_time=date("H:i:s d M Y"); // записываем текущее время в строку, 
//используя заданный формат
$U=getenv("HTTP_USER_AGENT"); // получаем данные о софте,
//который испольует пользователь
$H=getenv("HTTP_REFERER"); // получаем URL, с которого пришёл посетитель
$R=getenv("REMOTE_ADDR"); // получаем IP посетителя
$W=getenv("REQUEST_URI"); // получаем относительный адрес странички,
//которую запросил посетитель

while (ereg('%([0-9A-F]{2})',$H)){ // пока в строке $H будет хоть одно
//сочетание знака % и двух символов из диапазонов 0-9 и A-F
//(шестнадцатиричные цифры)
$val=ereg_replace('.*%([0-9A-F]{2}).*','\1',$H);
// присваиваем $val результат замены выражения,
//содержащего процент и два символа из означенных выше интервалов,
//на эти самые два символа
// короче говоря, теперь в $val у нас очередные 2 символа,
//перед которыми в исходном выражении стоял процент
$newval=chr(hexdec($val)); // получаем сивол с номером,
//полученным переведением полученного в $val
//шестнадцатиричного числа в "нормальное"
$H=str_replace('%'.$val,$newval,$H);
//стандартная строковая функция замены -
//заменяет подстроку, состоящую из процента и друх символов
//из переменной $var на символ, который эти два
//шестнадцатиричных символа кодировали
}// конец цикла :)

$f=fopen("logs/visits.log",'a'); // дальше - понятно, пишем всё это в файл
flock ($f,2);
fwrite($f,"$er_time\n Br: $U\n Rf: $H\n IP: $R\n Rq: $W\n");
fclose($f);

Что это такое и зачем?

Перед Вами php код, который позволяет отслеживать посетителей Вашего сайта. А именно:
• дату посещения;
• версия и название используемого программного обеспечения;
• ссылку с которой посетил Ваш сайт;
• IP адрес;
• ссылку, которую посетил.

Что я в нем изменил?

Вместо обычного лог-файла вывел информацию в html-страницу, добавил оформление для более удобного чтения, убрал Google, Yandex ботов для того, чтобы было меньше строк. Боты нам в статистике не нужны.

Также дал ему название Myvishow и версию 1.2, так как уже немного изменил. В дальнейшем, если будет время - буду развивать.

Тестирование проходит на сайте с посещаемостью 100 человек/день, все работает отлично.

Итак, встречайте сам код:

$er_time=date("H:i:s d M Y"); 
$U=getenv("HTTP_USER_AGENT");
$H=getenv("HTTP_REFERER");
$R=getenv("REMOTE_ADDR");
$W=getenv("REQUEST_URI");

$bots = substr($U, 0, 34);

$sty = "<style>
ul { background:#f5f5f5;border-radius:9px; border:1px solid #ccc;list-style:none;}
ul > li { background:#fff;border-radius:9px; border:1px solid #ccc; padding:2px 10px; list-style:decimal outside;}
</style>";

if ( $bots == "Mozilla/5.0 (compatible; Googlebot" or $bots == "Mozilla/5.0 (compatible; YandexBot" or $bots == "Mozilla/5.0 (compatible; YandexDir)" or $bots == "Mozilla/5.0 (compatible; bingbot)/" or $bots == "Feedfetcher-Google; (+http://www.g"){}
else{
while (ereg('%([0-9A-F]{2})',$H)){
$val=ereg_replace('.*%([0-9A-F]{2}).*','\1',$H);
$newval=chr(hexdec($val));
$H=str_replace('%'.$val,$newval,$H);
}

$f=fopen("/files/visits.html",'a');
flock ($f,2);
fwrite($f,"<ul><strong><li>VISIT</li></strong>
<li>$er_time</li>
<li>Br: $U</li>
<li>Rf: <a target=\"_blank\" href=\"$H\">$H</a></li>
<li>IP: $R</li>
<li>Rq: $W</li>
</ul><hr />");
if ($size_me < 130) {$f=fopen("/files/visits.html",'a');
flock ($f,2);
fwrite($f,$sty);
fclose($f);}
}
$f = "/files/visits.html";
$size_me = filesize($f);
echo "<meta http-equiv='refresh'; content='0; url=https://usemind.org/'>"; //перенаправление на указанный адрес
?>

v1.2 - немного подправил код, добавил перенаправление. Мне понадобилось перенаправлять пользователя на указанный URL-адрес.
То есть, у меня есть VDS, я поставил защиту от прямых ссылок на мой ресурс и перенаправление на страницу https://usemind.org/files/index.php, где расположен вышеуказанный код. Посетив её, пользователь сразу направляется на основной сайт. Это дает мне возможность узнавать откуда пришел пользователь и где используют мои файлы без ведома.


v1.3 > 2013-06-02. Доработал. Теперь ссылки запрашиваемые стали понятными.
Если размер файла меньше 130 байт (то есть еще не создан), то мы записываем стиль и тех. данные. При этом получается, что они записываются только один раз в файл.
Теперь мы создаем файл с месяцем и днем в имени, чтобы было легче ориентироваться и файлы не были слишком громоздкими, если ты не будешь их чистить.

$er_time=date("H:i:s d M Y");
$er_time2=date("m-d");
$U=getenv("HTTP_USER_AGENT");
$H=getenv("HTTP_REFERER");
$R=getenv("REMOTE_ADDR");
$W=getenv("REQUEST_URI");

$bots = substr($U, 0, 34);

$sty = "
<!DOCTYPE html>
<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"ru-ru\" lang=\"ru-ru\">
<style>
ul {background:#f5f5f5;border-radius:9px; border:1px solid #ccc;list-style:none;margin-bottom:0px;}
ul > li { background:#fff;border-radius:9px; border:1px solid #ccc; padding:1px 10px; list-style:decimal outside;}
</style>
<ul><li>$er_time</li>
<li>Br: $U</li>
<li>Rf: <a target=\"_blank\" href=\"$H\">$H</a></li>
<li>IP: $R</li>
<li>Rq: $W</li>
</ul><hr />";
if ( $bots == "Mozilla/5.0 (compatible; Googlebot" or $bots == "Mozilla/5.0 (compatible; YandexBot" or $bots == "Mozilla/5.0 (compatible; YandexDir" or $bots == "Mozilla/5.0 (compatible; bingbot)/" or $bots == "Mozilla/5.0 (compatible; BegunAdve" or $bots == "Feedfetcher-Google; (+http://www.g")
{exit;}
else{
while (ereg('%([0-9A-F]{2})',$H)){
$val=ereg_replace('.*%([0-9A-F]{2}).*','\1',$H);
$newval=chr(hexdec($val));
$H=str_replace('%'.$val,$newval,$H);}
while (ereg('%([0-9A-F]{2})',$W)){
$val2=ereg_replace('.*%([0-9A-F]{2}).*','\1',$W);
$newval2=chr(hexdec($val2));
$W=str_replace('%'.$val2,$newval2,$W);
}

$fileSize = "/var/www/ ПОЛНЫЙ_ПУТЬ_К ФАЙЛУ /visitors$er_time2.html";
$size_me = filesize($fileSize);

if ($size_me <= 130) {$f=fopen("/var/www/ ПОЛНЫЙ_ПУТЬ_К ФАЙЛУ /visitors$er_time2.html",'a');
flock ($f,2);
fwrite($f,$sty);
fclose($f);}
else
{
$f=fopen("/var/www/ ПОЛНЫЙ_ПУТЬ_К ФАЙЛУ /visitors$er_time2.html",'a');
flock ($f,2);
fwrite($f,"<ul><li>$er_time</li>
<li>Br: $U</li>
<li>Rf: <a target=\"_blank\" href=\"$H\">$H</a></li>
<li>IP: $R</li>
<li>Rq: $W</li>
</ul><hr />");
}
}

ПОЛНЫЙ_ПУТЬ_К_ФАЙЛУ ты можешь узнать через команду echo $_SERVER['DOCUMENT_ROOT'];, которую нужно поместить в файл name.php:

<? echo $_SERVER['DOCUMENT_ROOT']; ?>

затем кинуть на свой сервер через FTP и пройти по пути: http://твойсайт.org/name.php


Итак, что с этим делать?

Если тебе требуется знать когда, кто и откуда пришел на Ваш сайт, какую страницу посетил, то необходимо вставить этот код в индексную страницу, обычно index.php, папку logs и файл visits.html будут созданы автоматически. Проверь на всякий случай, если у тебя уже есть папка logs доступна ли она для записи.

После того, как ты расположишь этот код на индексной странице, пройди в http://ДОМЕН.ORG/logs/visits.html , где увидишь приблизительно следующее:

Скрипт посещения сайта даром.

Myvishow