防止刷人气100分

rczjp 2009-09-08 07:08:06
点击查看一篇文章 点击率+1
如何防止刷新或者重新进入,那点击率只加一次呢?
当然如果查看其他文章,点击率还是会加1,不过也只是只加一次。
...全文
201 30 打赏 收藏 转发到动态 举报
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
dahaidao 2009-09-10
  • 打赏
  • 举报
回复
注册用户吧,这样如果有谁恶意刷服务器,可以把它的人气清0,或关小黑屋.
rczjp 2009-09-10
  • 打赏
  • 举报
回复
[Quote=引用 29 楼 lfywy 的回复:]
引用 28 楼 rczjp 的回复:
在Access里面怎么判断如果超过一小时,查看文章,查看数+1呢?sql语句有知道的吗 谢谢

Access的话,访问量大的话就要挂了啊,个人认为用SQL或ORACLE数据库,再利用存储过程来实现,效率更高
[/Quote]
嗯 SQL是更好,在ACCESS里知道怎么判断当前时间超过了一小时呢?
lfywy 2009-09-10
  • 打赏
  • 举报
回复
[Quote=引用 28 楼 rczjp 的回复:]
在Access里面怎么判断如果超过一小时,查看文章,查看数+1呢?sql语句有知道的吗 谢谢
[/Quote]
Access的话,访问量大的话就要挂了啊,个人认为用SQL或ORACLE数据库,再利用存储过程来实现,效率更高
rczjp 2009-09-10
  • 打赏
  • 举报
回复
在Access里面怎么判断如果超过一小时,查看文章,查看数+1呢?sql语句有知道的吗 谢谢
黑心 2009-09-09
  • 打赏
  • 举报
回复
2楼才是正道 。

COOKIES或SESSION 都不是很理想。
召耳先生 2009-09-09
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 in0512 的回复:]
引用 12 楼 liuwei_it_love 的回复:
用session(ip)="获取的IP"判断一下就行了,如果IP已存在就停止累加,如果不存在就加1


最简单最快的方法,但是如果关闭浏览器,重新打开,SESSION会消失,会重新计数


[/Quote]


你这个还要考虑到日期的问题,总不能第二天登陆了,还不计数吧
召耳先生 2009-09-09
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 number123456 的回复:]
或者利用LOG分析
己前接触过一位前辈运营一个门户的网站,所有新闻都生成了静态页,而且因访问量太大,计算点击率的话更新数据库太频繁,所以就利用LOG,每天晚上打一固定时间来统一更新点击率,
如日志中记录
IP 127.0.0.1 访问 news/1.html
则为新闻表ID=1的内容+1点击率,如果出现重复的记录则忽略不记
[/Quote]

这个方法不错
召耳先生 2009-09-09
  • 打赏
  • 举报
回复


''=======================================================
'用户每天登陆都可增加1点劵,每天只计一次 ,每天重复登陆N次也只加一次点劵
''========================================================


sstr="select * from jflog where username="&sqlstr(session("useruname"))&" order by jfid desc"
set rrs=cn.execute(sstr)
if not rrs.eof then
if stime=formatdate(rrs("addtime"),2) then


a="Update member set dlhits=dlhits+1,dltime=getdate(),dlip='"&dlip&"' where userID=" & Session("UserID")
Cn.execute(a)
session("jifen")=objrs("jifen")
else
b="Update member set dlhits=dlhits+1,dltime=getdate(),dlip='"&dlip&"',jifen=jifen+10,dj=dj+1 where userID=" & Session("UserID")
Cn.execute(b)

h="Update jf set jf=jf+10 where userID=" & Session("UserID")
Cn.execute(h)

j="Update dj set dj=dj+1 where userID=" & Session("UserID")
Cn.execute(j)

c="insert into jflog(userid,username,addtime,jfmx,bz,jf,ip) values(" & sqlstr(Session("UserID")) & "," & sqlstr(Session("userUname")) &",getdate()," & sqlstr(jfmx)&"," & sqlstr(bz)&"," & sqlstr(jf)&"," & sqlstr(dlip)&")"
cn.execute c
session("jifen")=objrs("jifen")+10

f="insert into djlog(userid,username,addtime,djmx,bz,dj,ip) values(" & sqlstr(Session("UserID")) & "," & sqlstr(Session("userUname")) &",getdate()," & sqlstr(djmx)&"," & sqlstr(bz)&"," & sqlstr(dj)&"," & sqlstr(dlip)&")"
cn.execute f
session("dj")=objrs("dj")+1






end if
else
d="Update member set dlhits=dlhits+1,dltime=getdate(),dlip='"&dlip&"',jifen=jifen+10,dj=dj+1 where userID=" & Session("UserID")
Cn.execute(d)

h="Update jf set jf=jf+10 where userID=" & Session("UserID")
Cn.execute(h)

j="Update dj set dj=dj+1 where userID=" & Session("UserID")
Cn.execute(j)

e="insert into jflog(userid,username,addtime,jfmx,bz,jf,ip) values(" & sqlstr(Session("UserID")) & "," & sqlstr(Session("userUname")) &",getdate()," & sqlstr(jfmx)&"," & sqlstr(bz)&"," & sqlstr(jf)&"," & sqlstr(dlip)&")"
cn.execute e
session("jifen")=objrs("jifen")+10

g="insert into djlog(userid,username,addtime,djmx,bz,dj,ip) values(" & sqlstr(Session("UserID")) & "," & sqlstr(Session("userUname")) &",getdate()," & sqlstr(djmx)&"," & sqlstr(bz)&"," & sqlstr(dj)&"," & sqlstr(dlip)&")"
cn.execute g
session("dj")=objrs("dj")+1
end if
'======================================================
'用户每天登陆都可增加10积分,每天只计一次 ,每天重复登陆N次也只加一次积分


判断IP,同IP同天只能计一次,我发一段给你看看,随便写的,但是可以用
只是上面是同天同IP登陆只增加一次积分。。。。。



rczjp 2009-09-09
  • 打赏
  • 举报
回复
还是时间类型
在Access里面怎么判断如果超过一小时,查看文章,查看数+1呢?
  • 打赏
  • 举报
回复
写的都很好学习了....
number123456 2009-09-09
  • 打赏
  • 举报
回复
或者利用LOG分析
己前接触过一位前辈运营一个门户的网站,所有新闻都生成了静态页,而且因访问量太大,计算点击率的话更新数据库太频繁,所以就利用LOG,每天晚上打一固定时间来统一更新点击率,
如日志中记录
IP 127.0.0.1 访问 news/1.html
则为新闻表ID=1的内容+1点击率,如果出现重复的记录则忽略不记
jianjianmoluo 2009-09-09
  • 打赏
  • 举报
回复
ip限制
rczjp 2009-09-09
  • 打赏
  • 举报
回复
嗯 还是做个表来保存IP 文章ID 和时间
由于我使用的是 Access 的日期,所以我想过一个小时来看文章还是+1,怎么做呢?只有日期的可以做到吗?
如果可以 SQL语句怎么写?
因为小时计算不出来的话感觉一天的人气才+1有点少。。
in0512 2009-09-09
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 liuwei_it_love 的回复:]
用session(ip)="获取的IP"判断一下就行了,如果IP已存在就停止累加,如果不存在就加1
[/Quote]

最简单最快的方法,但是如果关闭浏览器,重新打开,SESSION会消失,会重新计数

MR丶CHAN 2009-09-09
  • 打赏
  • 举报
回复
mark and up
liuwei_IT_love 2009-09-09
  • 打赏
  • 举报
回复
用session(ip)="获取的IP"判断一下就行了,如果IP已存在就停止累加,如果不存在就加1
lfcms 2009-09-09
  • 打赏
  • 举报
回复
用COOKIES或SESSION
jyliao 2009-09-09
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 hookee 的回复:]
1 建一个表(或用缓存)字段包括(用户ID, IP, 文章ID。时间戳)
2 用户点击后,判断时间范围内这三元组(用户ID, IP, 文章ID)是否存在,不存在则插入并更新计数,存在则不做操作。
3 服务器上做个服务或计划任务,定时清空超时的表记录
[/Quote]
建议用缓存. 对了最好是加个时间上去 . 每天需要判断一下就行了. 如果时间不等于今天就直接删除了. 这样就不必在服务器上弄个任务了..

这样做也有缺点. 就是有点耗资源...速度点会有点慢
hongmaohouzi 2009-09-09
  • 打赏
  • 举报
回复
可以记录访问人的IP地址,同一个IP计算一次,不过要有个时间限制,比如4个小时内算一次。4个小时到8个小时算2次。
babycry627 2009-09-09
  • 打赏
  • 举报
回复
学习了 2楼的不错 楼上的看的不是很明白
加载更多回复(10)

28,406

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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