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

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>";
}
?>
...全文
139 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
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可以做到,可是我试了也不行啊,请各位大虾指正,谢谢了!!!

21,886

社区成员

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

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