Simple PHP hit counter incrementing by two?
I made a hit counter for a web app, but am confused as to why it's incre开发者_如何学Gomenting by two. I simply set a counter variable from the hitCount.txt file, which contains an integer and write the pre-incremented value back to the file.
The code in question:
// 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;
I'd say the most logical explanation is that your PHP script is called twice.
Take a look at what's called by the browser, using for example the Net tab of Firebug.
A typical example is an <img>
tag with an empty src
: the browser will consider the empty src
points to the current page -- and reload the current URL.
As a sidenote : instead of reading the file and only then writing it back, you should open your file in read/write mode, and lock it, to avoid concurrent writes -- see flock()
.
Basically, as you are already opening the file in r+ mode, you should use something like fgets()
to read from it -- and not file_get_contents()
.
精彩评论