Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
简单PHP命中计数器递增2?_Php_Increment_Hitcounter - Fatal编程技术网

简单PHP命中计数器递增2?

简单PHP命中计数器递增2?,php,increment,hitcounter,Php,Increment,Hitcounter,我为一个网络应用做了一个点击计数器,但我不明白为什么它会增加两个。我只需从hitCount.txt文件中设置一个计数器变量,该文件包含一个整数,并将预先递增的值写回该文件 有关守则: // get visit count $wag_file = "hitCount.txt"; $fh = fopen($wag_file, 'r+'); $wag_visit_count = intval(file_get_contents($wag_file)); // i

我为一个网络应用做了一个点击计数器,但我不明白为什么它会增加两个。我只需从hitCount.txt文件中设置一个计数器变量,该文件包含一个整数,并将预先递增的值写回该文件

有关守则:

    // get visit count
    $wag_file = "hitCount.txt";
    $fh = fopen($wag_file, 'r+');
    $wag_visit_count = intval(file_get_contents($wag_file));
    // increment, rewrite, and display visit count
    fputs($fh, ++$wag_visit_count);
    fclose($fh);
    echo $wag_visit_count . $html_br;

我认为最合乎逻辑的解释是PHP脚本被调用了两次

查看一下浏览器所称的内容,例如使用的“网络”选项卡

一个典型的例子是<代码>:浏览器将考虑空<代码> Src < /Co>点到当前页面,并重新加载当前URL。


作为旁注:与读取文件然后再写回文件不同,您应该以读/写模式打开并锁定文件,以避免并发写入--请参阅


基本上,因为您已经在r+模式下打开了文件,所以应该使用类似于读取文件的东西,而不是
file\u get\u contents()

我认为最合理的解释是PHP脚本被调用了两次

查看一下浏览器所称的内容,例如使用的“网络”选项卡

一个典型的例子是<代码>:浏览器将考虑空<代码> Src < /Co>点到当前页面,并重新加载当前URL。


作为旁注:与读取文件然后再写回文件不同,您应该以读/写模式打开并锁定文件,以避免并发写入--请参阅


基本上,由于您已经在r+模式下打开文件,您应该使用类似于读取文件的东西,而不是
file\u get\u contents()

尝试使用
intval(trim(file\u get\u contents($wag\u file)))
我见过其他人使用trim作为规则,但我不确定是否有必要,如果这是唯一写入它的东西,并且没有写入空格。传统的想法是什么?
intval
忽略空格(包括\r\n\t)以及数字后面的任何尾随垃圾或空格。所以你通常不需要
trim
@mario:好消息。。。我不知道我总是使用
(type)
来投射值。。。也许我应该重新考虑一下:-)尝试使用
intval(trim(file\u get\u contents($wag\u file))
我见过其他人使用trim作为规则,但我不确定是否有必要,如果这是唯一写入它的东西,并且没有写入空格。传统的想法是什么?
intval
忽略空格(包括\r\n\t)以及数字后面的任何尾随垃圾或空格。所以你通常不需要
trim
@mario:好消息。。。我不知道我总是使用
(type)
来投射值。。。也许我应该重新考虑一下:-)谢谢。我会回去让它更结实。需要把文件存在的检查,太。啊,很好的捕捉!我将它粘贴到一个带有错误CSS链接的测试php模板中。现在修好了,谢谢。我会回去让它更结实。需要把文件存在的检查,太。啊,很好的捕捉!我将它粘贴到一个带有错误CSS链接的测试php模板中。现在修好了。