计数器问题,你一定会。

sywh 2005-12-12 01:17:34
<?php
//计数器
//本计数器无需数据库支持。
//说明:
// $five,$four等标量表示零的个数,放在数字前构成6位
//的来访者数目。当然,如果你的网站
//浏览量十分巨大,你可以添加$six,$seven等等构成更大的数字显
//示来访者的数目。
function Counter() {
$five="00000";
$four="0000";
$three="000";
$two="00";
$one="0";
$counter="counternumber.dat"; //存放访客数目的文件.dat格式
if (!file_exists($counter)) //判断文件是否存在,如果不存在以写方式建立一个文件
{
$counter=fopen($counter,"w");
fputs($counter,"0");
fclose($counter);
}
else
{
$num=file($counter,"r"); //如果文件存在则读出文件,并加1
$num[0]+=1;
if($num[0]<10){ //判断数字的大小,如果小于100000根据不同情况在前面
print "$five"."$num[0]"; //加上不同个数的0,为了凑够6位。
}elseif($num[0]<100){
print "$four"."$num[0]";
}elseif($num[0]<1000){
print "$three"."$num[0]";
}elseif($num[0]<10000){
print "$two"."$num[0]";
}elseif($num[0]<100000){
print "$one"."$num[0]";
}else{
print "$num[0]";
} }
$fp=fopen($counter,"w"); //以写入文件方式打开文件
fputs($fp,"$num[0]"); //将加过1的数字放入文件中
fclose($fp); //关闭文件
}


?>

问题:
为什么我每次刷新页面,计数器都加2而不是加1?
...全文
227 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Meteorlet 2005-12-13
  • 打赏
  • 举报
回复
w+模式在文件不存在的时候会新建,w模式不会
sywh 2005-12-13
  • 打赏
  • 举报
回复
在单位的机子按照楼上的成功了,谢谢了,顺便问一句,W和W+有没有区别呢?
jsidiot 2005-12-12
  • 打赏
  • 举报
回复
试了一下你的函数,本身没有问题
而且我没刷新一次也是增加一次,查查是不是调用的地方重复调用了两次
只是

$fp=fopen($counter,"w"); //以写入文件方式打开文件
这个地方会报错
我改成了

$fp=fopen($counter,"w+"); //以写入文件方式打开文件

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧