如何更改此唯一命中计数器中计算的值?

时间:2011-04-26 13:40:19

标签: php counter

我有这个独特的点击计数器:

<?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,但会显示{{1}的点击次数}}) 有人知道怎么做吗?感谢。

1 个答案:

答案 0 :(得分:0)

仅举例(评论中要求)

<?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;
?>

这仍然不是计算用户数量的最佳方式。