0

我写了一个网络计数器,计数器从 count.txt 获取数字,并在我访问网络时加 1。

但是刷新页面时如何防止它加1???

编码:

<?php
//Get User's IP
    if ($_SESSION['your_ip'] != $_SERVER['REMOTE_ADDR']) {
        $_SESSION['your_ip']  = $_SERVER['REMOTE_ADDR'];
        $addone = ture;
    }
    else {
        $addone = false;
    }
//Get the number stored in "count.txt"
    $fp = fopen("count.txt",'r');
    while(!feof($fp)) {
        $buf .= fgets($fp,1024);
    }
    fclose($fp);
//Convert $buf into number and add 1
    if ($addone == ture) {
        $buf = intval($buf) + 1;
    }
//Replace the number in count.txt by $buf
    $fp = fopen("count.txt",'w');
    fputs($fp,$buf);
    fclose($fp);
//Break $buf
    $num1 = intval($buf/100000000);
    $buf = $buf%100000000;
    $num2 = intval($buf/10000000);
    $buf = $buf%10000000;
    $num3 = intval($buf/1000000);
    $buf = $buf%1000000;
    $num4 = intval($buf/100000);
    $buf = $buf%100000;
    $num5 = intval($buf/10000);
    $buf = $buf%10000;
    $num6 = intval($buf/1000);
    $buf = $buf%1000;
    $num7 = intval($buf/100);
    $buf = $buf%100;
    $num8 = intval($buf/10);
    $buf = $buf%10;
    $num9 = intval($buf/1);
    $buf = $buf%1;
//Display result
    echo "<img src=\"elements/num_".$num1.".png\">";
    echo "<img src=\"elements/num_".$num2.".png\">";
    echo "<img src=\"elements/num_".$num3.".png\">";
    echo "<img src=\"elements/num_".$num4.".png\">";
    echo "<img src=\"elements/num_".$num5.".png\">";
    echo "<img src=\"elements/num_".$num6.".png\">";
    echo "<img src=\"elements/num_".$num7.".png\">";
    echo "<img src=\"elements/num_".$num8.".png\">";
    echo "<img src=\"elements/num_".$num9.".png\">";
?>
4

2 回答 2

2

为防止意外重复计算,您可以使用具有适当有效期的Cookie 。

于 2013-10-08T14:18:47.617 回答
2

使用会话结束时过期的会话 cookie。这样您就可以测试是否存在设置的 cookie,然后才运行您的代码来更新计数器。查看php.net以了解如何使用会话 cookie。

于 2013-10-08T14:19:20.587 回答