<?php
$counterFile="counter.txt";function displayCounter($counterFile) {if (!file_exists($counterFile)) {
$num=1;
}
else
{
$fp=fopen($counterFile, "r");
$num = fgets($fp,5);
$num += 1;
fclose($fp);
}
print "<div id=\"footer\">您是第 "."$num"." 位无聊的人</div>";$fp=fopen($counterFile, "w");
fputs($fp, "$num");
fclose($fp);
}displayCounter($counterFile);?>这是一段php访客计数的代码。可是,这样写有个问题,就是每刷新一次页面,都会计数一次。请问,应该如何修改,使访客在退出浏览器之前不重复计数?
$counterFile="counter.txt";function displayCounter($counterFile) {if (!file_exists($counterFile)) {
$num=1;
}
else
{
$fp=fopen($counterFile, "r");
$num = fgets($fp,5);
$num += 1;
fclose($fp);
}
print "<div id=\"footer\">您是第 "."$num"." 位无聊的人</div>";$fp=fopen($counterFile, "w");
fputs($fp, "$num");
fclose($fp);
}displayCounter($counterFile);?>这是一段php访客计数的代码。可是,这样写有个问题,就是每刷新一次页面,都会计数一次。请问,应该如何修改,使访客在退出浏览器之前不重复计数?
if (!isset($_SESSION['变量名'])){ //如果没有$_SESSION值,那么加1
$num += 1;
}
一台电脑每天无论访问多少次都算一次?
还是一台电脑进入一次网站就算一次?
如果是后者,楼上方法可行
如果是前者,恐怕要结合IP地址的判断了,已经访问过的IP计入一个文件中,刷新时先判断IP是否已经存在。但是这样也有一个问题,就是如果用户使用的是代理IP,那么无论多少用户使用该IP他们访问你的站点每天最多只能有一次。
还有一种方法就是使用客户端的MAC地址,但是这要使用JS才行,受限于用户浏览器安全级别。
楼上,我是希望这样:
同一台电脑在关闭浏览器后,重新登录算一次。可是关闭浏览器之前刷新页面不要计数。
<?php
$counterFile="counter.txt"; function displayCounter($counterFile) { if (isset($_COOKIE["访问已记录"])) {
return;
}
//函数setcookie("cookie名","cookie记录内容", "有效时间"),默认有效时间不关闭浏览器之间有效
setcookie("访问已记录", "");//time()+3600*12
if (!file_exists($counterFile)) {
$num=1;
}
else {
$fp=fopen($counterFile, "r");
$num = fgets($fp,5);
$num += 1; fclose($fp);
}
print "<div id=\"footer\">您是第 ".$num." 位无聊的人 </div>"; $fp=fopen($counterFile, "w");
fputs($fp, "$num");
fclose($fp);
} displayCounter($counterFile);
您给的代码我试了试,很可惜,没有什么变化。
唔……这是用楼主代码改的,楼主看看符合要求不
<?php
session_start();
if (!isset($_SESSION['guest'])){
$_SESSION['guest']='online';
}else{
$_SESSION['guest']='end';
}
$counterFile="counter.txt";function displayCounter($counterFile) {if (!file_exists($counterFile)) {
$num=1;
}
else
{
$fp=fopen($counterFile, "r");
$num = fgets($fp,5);
if ($_SESSION['guest']=='online'){
$num += 1;
$_SESSION['guest']='end';
}fclose($fp);
}
print " <div id=\"footer\">您是第"."$num"."用户</div>";$fp=fopen($counterFile, "w");
fputs($fp, "$num");
fclose($fp);
}displayCounter($counterFile);
?>
不支持使用cookie。
觉得session不错
考虑过脚本没