那位熟悉asp的富翁知道:统计下载软件次数是如何防止一个IP重复下载的 ( 积分: 99 )

  • 主题发起人 主题发起人 ranxg
  • 开始时间 开始时间
R

ranxg

Unregistered / Unconfirmed
GUEST, unregistred user!
不会是每个IP都记录吧,又不是投票.我想软件下载次数统计怕不会那么严格.
那位熟悉asp的富翁知道:统计下载软件次数是如何防止一个IP重复下载的.
开一个新帖
http://www.delphibbs.com/delphibbs/dispq.asp?lid=3226735
 
不会是每个IP都记录吧,又不是投票.我想软件下载次数统计怕不会那么严格.
那位熟悉asp的富翁知道:统计下载软件次数是如何防止一个IP重复下载的.
开一个新帖
http://www.delphibbs.com/delphibbs/dispq.asp?lid=3226735
 
如果不记IP有点难办哦!
 
一般而言这样处理,一个ip在一天内只能下载一次,因此,只需要记录当天的ip即可。
下面是一个这样原理的计数器,你参考一下:

<%
'防刷新计数器
Response.Expires=-1
dim conn,connstr,rs,vip,vips,vtoday,vyesterday,vtodaytime,vsaveips,vmax,vmaxtime,vdays,vdayavg
set conn=Server.CreateObject(&quot;ADODB.Connection&quot;)
connstr=&quot;Provider=Microsoft.Jet.OLEDB.4.0;Data Source=&quot;&amp;Server.MapPath(&quot;num/num.mdb&quot;)
conn.open connstr
vip=&quot;#&quot;&amp;Request.servervariables(&quot;REMOTE_ADDR&quot;)
set rs=conn.execute(&quot;select vips,vtoday,vtodaytime,vsaveips,vmax,vmaxtime from [num]&quot;)
if rs.eof and rs.bof then
sql=&quot;insert into [num] (vips,vtoday,vyesterday,vtodaytime,vsaveips,vmax,vmaxtime,vstarttime) values(0,0,0,Date(),'#',0,Date(),Now())&quot;
conn.execute(sql)
else
if rs(2)=Date() then
if Instr(rs(3),vip)=False then
vips=rs(0)+1
vtoday=rs(1)+1
if rs(3)=&quot;#&quot;
then
vsaveips=vip
else
vsaveips=rs(3)&amp;vip
end if
conn.execute(&quot;update [num] set vips='&quot;&amp;vips&amp;&quot;',vtoday='&quot;&amp;vtoday&amp;&quot;',vsaveips='&quot;&amp;vsaveips&amp;&quot;'&quot;)
end if
else
vips=rs(0)+1
vtoday=1
vyesterday=rs(1)
vtodaytime=Date()
vsaveips=vip
conn.execute(&quot;update [num] set vips='&quot;&amp;vips&amp;&quot;',vtoday='&quot;&amp;vtoday&amp;&quot;',vyesterday='&quot;&amp;vyesterday&amp;&quot;',vtodaytime='&quot;&amp;vtodaytime&amp;&quot;',vsaveips='&quot;&amp;vsaveips&amp;&quot;'&quot;)
end if
if clng(rs(1))>clng(rs(4)) then
vmax=rs(1)
vmaxtime=Now()
conn.execute(&quot;update [num] set vmax='&quot;&amp;vmax&amp;&quot;',vmaxtime='&quot;&amp;vmaxtime&amp;&quot;'&quot;)
end if
end if
rs.close
set rs=nothing
set rs=conn.execute(&quot;select vips,vtoday,vyesterday,vtodaytime,vsaveips,vmax,vmaxtime,vstarttime from [num]&quot;)
vdays=now()-cdate(rs(7))
vdayavg=rs(0)/vdays
vdays=int((vdays*10^3)+0.5)/10^3
if vdays<1 then
vdays=&quot;0&quot;
&amp;
vdays
vdayavg=int((vdayavg*10^3)+0.5)/10^3
……
 
1、RMIP=Request.ServerVariables(&quot;REMOTE_ADDR&quot;) 取遠程IP地址
2、Session(RMIP)=RMIP 要判斷這個IP是否存在 在前面加個判斷就可以了。
3、是否下載你自己確定即可。
 
如果你是ftp,那么你可以限制,因为很多ftp都支持
如果你是http你可以限制并发连接数来限制,但是可能会影响单页图片比较多的网页的正常显示
如果一定要对 http限制,可以考虑不返回真实文件地址,用asp打开文件后返回文件内容。这样可以拒绝断线续传。
 
你使用COOKIES技术再客户端写个东西不就知道了,下次下载前判断是不是有你写的标志,有的话说明下载过,那就可以干你想干的事了啊
 
由由(love)说的有道理,只是还不会弄!
 
对于ASP来说,如果用户的浏览器没有开Cookies的话。Cookies和Session都是不能使用的!!!!
所以,楼上上的二位,说的。。。。嘿嘿~~
 
使用数据库+adodb.stream就成了
数据库
ip filename(文件名)do
wntime(下载时间)do
wnYes(下载成功标识)
 
session建立个HAXI表来控制
 
后退
顶部