Только отслеживание уникальных посетителей?

В настоящее время у меня есть файл под названием «hits.php», и на любой странице я хочу отслеживать хиты страниц. Я просто использую <?php include("hits.php"); ?> <?php include("hits.php"); ?>

Как я могу отслеживать только уникальных посетителей? Мои хиты ложны, так как он может быть обновлен одним и тем же человеком, и хиты растут.

Вот мой источник:

 <?php $hits = file_get_contents("./client/hits.txt"); $hits = $hits + 1; $handle = fopen("./client/hits.txt", "w"); fwrite($handle, $hits); fclose($handle); print $hits; ?> 

Я действительно не знаю, как я могу проверить cookie … есть ли способ проверить IP? Или что я могу сделать?

Спасибо StackO.

Самый простой способ – проверка файлов cookie.

Лучше всего было бы создать базу данных SQL и назначить IP-адрес в качестве первичного ключа. Затем, когда пользователь посещает, вы вставляете этот IP-адрес в базу данных.

  1. Создайте функцию, включенную на все страницы, которые проверяют $_SESSION['logged'] которые вы можете назначить независимо от того, какой флаг вы хотите.
  2. Если $_SESSION['logged'] возвращает «false», тогда вставьте свой IP-адрес в базу данных MySQL.
  3. Установите $_SESSION['logged'] в 'true', чтобы не тратить ресурсы на многократное использование IP-адресов.

Примечание. При создании таблицы MySQL назначьте поле IP-адрес в качестве ключа.

 <?php session_start(); if (!$_SESSION['status']) { $connection = mysql_connect("localhost", "user", "password"); mysql_select_db("ip_log", $connection); $ip = $_SERVER['REMOTE_ADDR']; mysql_query("INSERT INTO `database`.`table` (IP) VALUES ('$ip')"); mysql_close($connection); $_SESSION['status'] = true; } ?> 
  1. На базовом уровне вы можете получить IP-адрес клиента, используя свойство PHP $_SERVER['REMOTE_ADDR']
  2. Рассмотрите возможность настройки cookie или использования сеанса, хотя это может быть побеждено путем удаления cookie или отказа cookie. Дополнительную информацию см. В документах PHP setcookie .
  3. Существуют и другие методы для отпечатков пальцев браузера – проверьте все разные данные, которые можно было бы использовать на https://panopticlick.eff.org/index.php

Как насчет аналитики Google, если вы не можете. вы можете сделать базу данных или создать другой файл с IP-адресами в нем, но это может усложниться с плоским файлом.

Существует не идеальное решение, но первые два метода (IP-адрес и / или файлы cookie) являются самыми надежными, и комбинация может быть еще лучше.

Вместо того, чтобы изобретать колесо, я использовал решение для полки. По коммерческим причинам я избегал Google Analytics (я не хочу, чтобы Google узнавал мою статистику в сети – их наилучшие интересы не мои). Они, вероятно, подходят для некоммерческих сайтов или если вы не используете Google для рекламы. Существуют также десятки альтернатив. Например, я использую Getclicky.com

Я нашел решение очень низкого качества и просто быстрый и грязный способ сделать это.

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

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

Псевдо:

  • Создайте таблицу с именем пользователя и именем пользователя просмотра (таблица daily_views).
  • Проверьте, существует ли имя зрителя с именем пользователя (в той же строке).
  • Если они не существуют, обновите счетчик пользователей +1 (в таблице пользователей).
  • Иначе ничего не делают.
  • Сброс всех значений таблицы null каждые 24/12 часа с помощью задания cron.

Это будет лишать того же человека доступа к одному и тому же профилю пользователя, чтобы добавить 1 к счетчику при обновлении в течение всего дня (или 12 часов), тогда как вышеупомянутое решение Гленн Нельсон действительно добавит 1 к счетчику, но откажется добавить счетчик каждого пользователя в то же время.

Не только это, но если вы должны выйти из системы и вернуться на сайт, то он просто добавит счетчик, в котором некоторые случаи троллей и haxorz wannabe будут использовать это (поскольку сеанс уничтожается и запускается снова).

Вот мои примеры таблиц:

 users { user_id INT(8) auto increment, user_name varchar(32), user_counter INT(12) }; daily_views { view_id INT(8) auto increment, viewer_name VARCHAR(32), viewee_name VARCHAR(32) }; 

Вот пример кода, который я написал:

 <?php session_start(); $uname = $_SESSION['username']; $vieweepage = $_GET['name']; //gets the name of the persons page/profile via previous page/form $connect = mysql_connect("localhost","user","password") or die("Couldn't connect; check your mysql_connect() settings"); $database = mysql_select_db("database") or die("Could not locate database!"); $query = mysql_query("SELECT user_counter from users"); $query = mysql_fetch_row($query); $counter = $query[0]; $viewcheck = mysql_query("SELECT viewer_name from daily_views WHERE viewee_name='$vieweepage'"); $viewrow = mysql_num_rows($viewcheck); $newcounter = $counter + 1; if($viewrow == 0) { $update = mysql_query("UPDATE users SET user_counter='$newcounter' WHERE user_name='$vieweepage'"); $insert = mysql_query("INSERT into daily_views (viewer_name, viewee_name) VALUES ('$uname', '$vieweepage')"); } ?> 

в настоящее время я использую remote address и session ID для visitor.i думаю, что его действительный посетитель, потому что один пользователь может посещать не раз в несколько дней, а счетчик не зависит от обновления, зависит только от нового сеанса.