如何让我的计数器具有防刷新的功能???

rabbit81120 2004-11-26 01:40:36
我做了一个计数器,代码如下:
<?php
session_save_path("temp");
// 以读写模式打开count.log文件
$fp=fopen("count.log","r+");
// 从文件中读取一行并转化为长整数
$count=(integer)(fgets($fp,10));
// 注册一个新的Session变量UID
session_register("UID");
// 若本次浏览期间用户是初次访问,则$UID未赋值,此时应使计数器加1并
// 给$UID赋值。给$UID赋值后,在本次浏览期间,无论是刷新还是重新返
// 回,计数器都不再改变,除非关闭浏览器后再重新进入站点
if (!isset($UID)) {
$UID=$count; // 给Session变量赋值
$count++; // 使计数器加1
fseek($fp,0); // 使文件指针回到文件的起始处
fputs($fp,$count,10); // 将访问次数写到文件中
}
fclose($fp); // 关闭文件
$length=strlen($count); // 计算$count长度
// 计数器由八位整数构成,每位数字均用GIF图片来表示
// 先显示几个0(数字零)
for($i=1;$i<=(8-$length);$i++) {
echo "<IMG SRC=/image/0.gif></IMG>";
}
// 显示具体的访问次数
for($i=0;$i<$length;$i++) {
echo "<IMG SRC=/image/".substr($count,$i,1).".gif></IMG>";
}
?>
...全文
119 点赞 收藏 14
写回复
14 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Meteorlet 2004-12-06
$UID=$_SESSION['UID'];
// 若本次浏览期间用户是初次访问,则$UID未赋值,此时应使计数器加1并
// 给$UID赋值。给$UID赋值后,在本次浏览期间,无论是刷新还是重新返
// 回,计数器都不再改变,除非关闭浏览器后再重新进入站点
if (empty($UID)) {
$_SESSION['UID']=$count; // 给Session变量赋值
$count++; // 使计数器加1
rewind($fp); // 使文件指针回到文件的起始处
fputs($fp,$count,10); // 将访问次数写到文件中
}
回复
Dargoon 2004-12-06
记录IP.. 一定时间内只记录一次.
回复
erldy 2004-12-06
老大就是老大!!
回复
xuzuning 2004-12-06
$UID=$_SESSION['UID'];
// 若本次浏览期间用户是初次访问,则$UID未赋值,此时应使计数器加1并
// 给$UID赋值。给$UID赋值后,在本次浏览期间,无论是刷新还是重新返
// 回,计数器都不再改变,除非关闭浏览器后再重新进入站点
if (!isset($UID)) {
$_SESSION['UID']=$count; // 给Session变量赋值
$count++; // 使计数器加1
rewind($fp); // 使文件指针回到文件的起始处
fputs($fp,$count,10); // 将访问次数写到文件中
}
回复
TianXiaI 2004-12-06
最简单的办法,将session id存入,然后判断是否有相同的就行了。
回复
rabbit81120 2004-11-26
晕了,这个会不会很复杂,可不可以告诉一下代码.
回复
ice_berg16 2004-11-26
可以按某一时间段的IP来记数,
如1分钟之内,如果IP重复就不计在内.
回复
rabbit81120 2004-11-26
对啊,也担心有些人的电脑会禁用cookie,到底要怎么做啊,哪位大虾快帮帮忙啊......
回复
rabbit81120 2004-11-26
怎么做啊,我不太会,麻烦楼上的告诉一下代码,谢谢!
回复
xdspower 2004-11-26
那如果客户端没有打开COOKIE呢?!
所以所有操作最后都在服务器端完成。
回复
rabbit81120 2004-11-26
我按你说的对程序做了如下修改,可是也没用啊

<?php
session_save_path("temp");
session_start();
// 以读写模式打开count.log文件
$fp=fopen("count.log","r+");
// 从文件中读取一行并转化为长整数
$count=(integer)(fgets($fp,10));
// 注册一个新的Session变量UID
$UID=$_session['UID'];
// 若本次浏览期间用户是初次访问,则$UID未赋值,此时应使计数器加1并
// 给$UID赋值。给$UID赋值后,在本次浏览期间,无论是刷新还是重新返
// 回,计数器都不再改变,除非关闭浏览器后再重新进入站点
if (!isset($UID)) {
$UID=$count; // 给Session变量赋值
$count++; // 使计数器加1
rewind($fp); // 使文件指针回到文件的起始处
fputs($fp,$count,10); // 将访问次数写到文件中
}
fclose($fp); // 关闭文件
$length=strlen($count); // 计算$count长度
// 计数器由八位整数构成,每位数字均用GIF图片来表示
// 先显示几个0(数字零)
for($i=1;$i<=(8-$length);$i++) {
echo "<IMG SRC=/image/0.gif></IMG>";
}
// 显示具体的访问次数
for($i=0;$i<$length;$i++) {
echo "<IMG SRC=/image/".substr($count,$i,1).".gif></IMG>";
}
?>
回复
sports98 2004-11-26
用COOKIE来做吧,我现在就是,用SESSION来做的话只要窗口关了再打开还是会被刷的。
回复
wxq4100798 2004-11-26
php 4.x版本后帮$_SESSION['XXXX'] = 'XXXX';
而不是session_register来注册变量
晕,

而且,你好像没有session_start()吧?
$_SESSION['uid']= $uid;
回复
rabbit81120 2004-11-26
这个程序是参考书上的,可是根本没办法实现防刷新的功能,搜索了以前的一些帖子,

说用session可以做到,可是我试了也不行啊,请各位大虾指正,谢谢了!!!
回复
相关推荐
发帖
基础编程
创建于2007-09-28

2.1w+

社区成员

从PHP安装配置,PHP入门,PHP基础到PHP应用
申请成为版主
帖子事件
创建了帖子
2004-11-26 01:40
社区公告
暂无公告