Статистика посещений на PHP

Пожалуй, одна из самых сложных, но в то же время обыденных, задач программиста является создание статистики посещений на PHP. В этой статье я покажу, как её можно сделать наиболее качественной.

Главная задача статистики посещений - это отличить одного пользователя от другого. Но как это сделать? К сожалению, это вообще невозможно. Если различать по IP, то ничего не выйдет. У огромного числа пользователей он динамический. Более того, у разных людей они повторяются. В итоге, 2 разных IP могут принадлежать одному человеку, а один и тот же IP может принадлежать разным людям.

Второй вариант - это отличать по cookie. Пожалуй, это лучший способ на данный момент. Безусловно, при смене браузера или очистки браузера от cookie, пользователь потеряется. Но другого выхода нет, поэтому лично я пристатистике посещений на PHP всегда ключевым делаю именно cookie.

На основании этого давайте с Вами разберём, какая таблица в базе нам потребуется. Вот те поля, которые я считаю необходимы для хорошей статистики посещений на PHP:

Теперь разберём PHP-код добавления в эту таблицу новой записи:

php
$userhash = $_COOKIE["userhash"]; // Узнаём, что за пользователь
if (!$userhash) {
/* Если это новый пользователь, то добавляем ему cookie, уникальные для него */
$userhash = uniqid();
setcookie("userhash", $userhash, 0x6FFFFFFF);
}
$ip = ip2long($_SERVER["REMOTE_ADDR"]); // Преобразуем IP в число
$uri = $_SERVER["REQUEST_URI"]; // Узнаём uri
$ref = $_SERVER["HTTP_REFERER"]; // Узнаём, откуда пришёл
$date = time(); // Берём текущее время
$mysqli = new mysqli("localhost", "root", "", "mydb"); // Соединяемся с базой
$mysqli->query("INSERT INTO `visits` (`userhash`, `ip`, `uri`, `ref`, `date`) VALUES ('$userhash', '$ip', '$uri', '$ref', '$date')"); // Добавляем запись
$mysqli->close(); // Закрываем соединение
?>

Безусловно, данный код надо размещать на всех страницах сайта. И так же он может быть и изменён в зависимости от Вашего движка. Также можно добавлять и другие данные, например, браузер пользователя, ОС и прочее.

И, конечно, данная статистика посещений на PHP не идеальна, но не думаю, что есть лучше. А уж идеала точно нет. В любом случае, если Вам нужно отслеживать пользователя на длительном периоде, то лучше как можно быстрее зарегистрировать его на сайте, а уже дальше отслеживать все его действия по полученному id. И вот это уже будет идеальная статистика.

 


 

Подключиться к базе данных через PHP можно следующим образом:

php
$mysqli = new mysqli('localhost', 'Admin', 'pass', 'mybase');
?>

Тут всё интуитивно понятно, однако, сделаю пояснения: мы создаём экземпляр объекта MySQLI, передавая конструктору следующие параметры:

  1. Имя хоста, на котором работает MySQL.
  2. Имя пользователя.
  3. Пароль.
  4. Имя базы данных, с которой мы хотим работать.