В настоящее время у меня есть файл под названием «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-адрес в базу данных.
$_SESSION['logged']
которые вы можете назначить независимо от того, какой флаг вы хотите. $_SESSION['logged']
возвращает «false», тогда вставьте свой IP-адрес в базу данных MySQL. $_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; } ?>
$_SERVER['REMOTE_ADDR']
Как насчет аналитики Google, если вы не можете. вы можете сделать базу данных или создать другой файл с IP-адресами в нем, но это может усложниться с плоским файлом.
Существует не идеальное решение, но первые два метода (IP-адрес и / или файлы cookie) являются самыми надежными, и комбинация может быть еще лучше.
Вместо того, чтобы изобретать колесо, я использовал решение для полки. По коммерческим причинам я избегал Google Analytics (я не хочу, чтобы Google узнавал мою статистику в сети – их наилучшие интересы не мои). Они, вероятно, подходят для некоммерческих сайтов или если вы не используете Google для рекламы. Существуют также десятки альтернатив. Например, я использую Getclicky.com
Я нашел решение очень низкого качества и просто быстрый и грязный способ сделать это.
Я тоже разрабатывал нечто подобное и формулировал быстрый метод, который работает без избыточности.
Мне нужен счетчик каждый раз, когда кто-то обращался к профилю другого пользователя.
Псевдо:
Это будет лишать того же человека доступа к одному и тому же профилю пользователя, чтобы добавить 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 думаю, что его действительный посетитель, потому что один пользователь может посещать не раз в несколько дней, а счетчик не зависит от обновления, зависит только от нового сеанса.