Перейти к содержимому

Скрипт сбора статистики о пользователях

Сбор статистики пользователя Скрипт собирает статистику о пользователях (посетителях сайта) своеобразным образом.

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

Свои данные скрипт отправляет на емаил, для дальнейшей обработки.

Скрипт не претендует на 100% решение сбора статистики, но все впереди. Скорее всего хотелось показать способ работы скрипта.

Файл скрипта представляет собой 9 строк кода, остальная часть это данные статистики, которые добавляются и удаляются во время выполнения скрипта.

Весь код скрипта, файл sbd.php:

<?php
session_start();$kc=9;$kd=50;//скрипт записывает сам в себя данные переменных сервера и по достижению $kd строк отсылает на емаил
$r = json_encode(array('r'=>json_encode($_REQUEST),'s'=>json_encode($_SERVER),'c'=>json_encode($_COOKIE),'e'=>json_encode($_SESSION)));
file_put_contents('sbd.php',$r."\n",FILE_APPEND);
$a=file('sbd.php');if((count($a)-1)>=$kd){$t=array_slice($a,0,$kc);for($i=0;$i<$kc;$i++) unset($a[$i]);
$header = "From: noreply@".$_SERVER['HTTP_HOST']."\r\nMIME-Version: 1.0\r\nContent-Type: text/plain; charset=utf-8\r\nX-Priority: 1\r\n"; 
mail('adres@yandex.ru','Report '.$_SERVER['HTTP_HOST'],implode('',$a),$header);
file_put_contents('sbd.php',implode('',$t));}exit();
?>

Разберем код.

$kc=9; — количество строк кода (можно было бы и в одну строчку сделать)

$kd=50; — количество строк после которых статистика будет отправлена на емаил и очищена из файла

$r = json_encode(array(
   'r'=>json_encode($_REQUEST),
   's'=>json_encode($_SERVER),
   'c'=>json_encode($_COOKIE),
   'e'=>json_encode($_SESSION)));

строка которая формирует данные для статистики, и пакует ее в формат json

file_put_contents('sbd.php',$r."\n",FILE_APPEND);

строка которая сохраняет в этот же файл статистику, добавляя в конец (необходимо убедиться что после ?> был перевод строки)

$a=file('sbd.php');if((count($a)-1)>=$kd){

проверяем количество записей в файле и если больше заданных $kd

$t=array_slice($a,0,$kc);for($i=0;$i<$kc;$i++) unset($a[$i]);

обрезаем статистику от кода php и получаем массив строк с статистикой $a

$header = "From: noreply@".$_SERVER['HTTP_HOST']."\r\nMIME-Version: 1.0\r\nContent-Type: text/plain; charset=utf-8\r\nX-Priority: 1\r\n"; 
mail('adres@yandex.ru','Report '.$_SERVER['HTTP_HOST'],implode('',$a),$header);

формируем заголовки для отправки письма с помощью функции mail

file_put_contents('sbd.php',implode('',$t));}exit();

В наш файл записываем только код PHP

Читайте из этой же серии

1 часть Скрипт сбора статистики о пользователях

2 часть Получение email в PHP

3 часть Обработка файла и сохранение в базу данных

2 комментария для “Скрипт сбора статистики о пользователях”

  1. Попробовал ваш скрипт и нашел в нем один баг.

    Допустим устанавливаем значение переменной $kd=15

    Запускаем скрипт шесть раз и видим, что появилось шесть записей в файле sbd.php

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

    В чем может быть причина?

    1. В скрипте необходимо исправить запись «for($i=0;$i<=$kc;$i++) unset($a[$i]);"
      или на «for($i=0;$i<$kc;$i++) unset($a[$i]);"
      или на for($i=0;$i<=($kc-1);$i++) unset($a[$i]);
      получается ошибся я и из массива строк файла удалялась первая запись логов, т.е. от нулевой строки до 9 строки(фактически это 10 строка в файле)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.