Как изменить значение, которое подсчитывается в этом уникальном счетчике хитов? - PullRequest
0 голосов
/ 26 апреля 2011

У меня есть этот уникальный счетчик посещений:

<?php
$log = 'hits.log';

$IP = getenv (REMOTE_ADDR);
$add = true;
$hits = 0;

if (!file_exists ($log)) {
    echo "Error: $log does not exist.";
    exit;
}

$h = fopen ($log, 'r');
while (!feof ($h)) {
    $line = fgets ($h, 4096);
    $line = trim ($line);
    if ($line != '')
        $hits++;

    if ($line == $IP)
        $add = false;
}

fclose($h);

if ($add == true) {
    $h = fopen ($log, 'a');
    fwrite($h, "
$IP");
    fclose($h);
    $hits++;
}

echo $hits;
?>

Но он учитывает только те уникальные хиты, которые получает страница, которую я помещаю. Поэтому, если я добавлю этот код на http://site.com, он будет отображать только уникальные хиты для http://site.com. Я хочу знать, могу ли я добавить или отредактировать что-то в коде, чтобы скрипт подсчитывал количество уникальных посещений для другой страницы, но отображал его на той странице, на которой он находится (трек http://site.com/yay, но при нажатии на http://site.com) знаете, как это сделать? Спасибо.

1 Ответ

0 голосов
/ 26 апреля 2011

Только для примера (запрошено в комментариях)

<?php
$log = 'hits.log';

if (!file_exists ($log)) {
    echo "Error: $log does not exist.";
    exit;
}

$hits = (int) file_get_contents($log);

if (!isset($_COOKIE['last_visit']) or date('d.m.Y', (int) $_COOKIE['last_visit']) != date('d.m.Y')) {
    setcookie('last_visit', time(), 90000); //of course you can encode it for security reason

    $hits++;
    file_put_contents($log, $hits);
}

echo $hits;
?>

Это все еще не лучший способ подсчета ваших пользователей.

...