懂asp代码的来
<%posttime=15ifcint(posttime)<>0thenifnotisnull(session("posttime"))orcint(posttime)>...
<%
posttime=15
if cint(posttime)<>0 then
if not isnull(session("posttime")) or cint(posttime)>0 then
if DateDiff("s",session("posttime"),Now())<cint(posttime) then
response.write "<script type='text/javascript'>alert('错误信息:留言本防灌水功能已经打开,限制"&posttime&"秒内不能重复留言。');history.back();</script>"
response.end
end if
end if
end if
if cint (posttime)<>0 then
session("posttime")=now()
end if
%>
1、求高手帮我解释一下上面的代码
2、cint(posttime)和session("posttime")有什么不同?
3、为什么要把posttime用cint()强制转成整形?一开始不是就已经定义了posttime=15?
4、最后为什么要把now存入session? 展开
posttime=15
if cint(posttime)<>0 then
if not isnull(session("posttime")) or cint(posttime)>0 then
if DateDiff("s",session("posttime"),Now())<cint(posttime) then
response.write "<script type='text/javascript'>alert('错误信息:留言本防灌水功能已经打开,限制"&posttime&"秒内不能重复留言。');history.back();</script>"
response.end
end if
end if
end if
if cint (posttime)<>0 then
session("posttime")=now()
end if
%>
1、求高手帮我解释一下上面的代码
2、cint(posttime)和session("posttime")有什么不同?
3、为什么要把posttime用cint()强制转成整形?一开始不是就已经定义了posttime=15?
4、最后为什么要把now存入session? 展开
2个回答
展开全部
你好,请听我说:
上面定义的posttime和用到的posttime肯定不是同一个概念。只不过这2个变量的名字取的是一样。所以
,你代码上面肯定还有其它关于posttime的代码。你没贴出来。我们来设想一下。灌水机制的原理:
假如,用户11:00发了一个帖子。15秒后才能再发贴,所以,我们记住了,此用户11:00发了一个帖子。
过了15秒后,现在是11:15分钟了。此时,我们又记住了,时间现在是11:15了。好了,此时,我们来再
来看一下程序。肯定是:11:15和11:10分之间的差距和设置的15秒进行比较,如果小于15秒就会提示,
不能灌水之类的话。如果大于15秒,OK,你可以继续发帖。是不是这个原理。OK,好了。既然原理我们懂
了。那下面就简单了。
这个过程,我们要做的是要记住,此用户,第一次发帖的时候和第二次发帖的时间。就是利用这个时间段
和设置的常量15秒进行比较。
当用户第一次发帖时,我们用session(posttime)来记住此时的时间。假如此刻是11时15分00秒
用户第二次发帖,此时的时间用now()来记住 。假如此刻是11时15分16秒
我们回过头来再看一下你的代码:
if cint(posttime)<>0 then '这个posttime是页面用来记住用户第一次发帖时间的变量,保存在
session里 ,因为在页面上,有可能某种原因或者别人仿仿造其他变量,所以有必要进行cint强制转换成
整形变量。当然,你不转换一般也不大会出错,但是总有那么万一嘛。
接下来。
if not isnull(session("posttime")) or cint(posttime)>0 then
判断,页面当中的用来记住用户第一次发帖的时间是不是为空。如果不为空且大于零,也就是说。能够记
住用户第一次发帖的详细时间。、就进行下面的代码
再接下来:、
if DateDiff("s",session("posttime"),Now())<cint(posttime) then
是用来判断,第二次发帖和第一次发帖的时间间隔是不是小于我们上面定义的posttime=15.如果小于15秒
就弹出了一个对话框,说。灌水机制已打开。
这时,你应该知道。DateDiff("s",session("posttime"),Now())中的posttime是你上面定义的15这个常
量。而<cint(posttime)这里的posttime是页面中用来存储用户发帖时间的变量。DateDiff("s",session
("posttime"),Now())这句话的意思是计算现在和第一次发帖时间间隔的。用秒来表示。(如果DateDiff
这个函数,你不懂,你可以百度一下。)
最后。你想一下,如果你不把now()存储在session里,会有什么结果。什么session?这里就是用来记住
用户发帖的时间点的。假如,用户发第一次贴,第二次和第一比较了。那第三次呢。怎么比较呢。当然是
第三次和第二次为起始点进行比较了。相同道理,第四次当然和第三次为起始点进行比较了。如果不存储
到session,那第三次,第四次怎么判断呢?是不是这个道理。我这么说,你就很容易理解了。
不说了。大白话,说的很详细了,很明白了。你提的问题,在里面都能找到。睡觉。-_- 。如果觉得好,别忘记了给我加分呀。
上面定义的posttime和用到的posttime肯定不是同一个概念。只不过这2个变量的名字取的是一样。所以
,你代码上面肯定还有其它关于posttime的代码。你没贴出来。我们来设想一下。灌水机制的原理:
假如,用户11:00发了一个帖子。15秒后才能再发贴,所以,我们记住了,此用户11:00发了一个帖子。
过了15秒后,现在是11:15分钟了。此时,我们又记住了,时间现在是11:15了。好了,此时,我们来再
来看一下程序。肯定是:11:15和11:10分之间的差距和设置的15秒进行比较,如果小于15秒就会提示,
不能灌水之类的话。如果大于15秒,OK,你可以继续发帖。是不是这个原理。OK,好了。既然原理我们懂
了。那下面就简单了。
这个过程,我们要做的是要记住,此用户,第一次发帖的时候和第二次发帖的时间。就是利用这个时间段
和设置的常量15秒进行比较。
当用户第一次发帖时,我们用session(posttime)来记住此时的时间。假如此刻是11时15分00秒
用户第二次发帖,此时的时间用now()来记住 。假如此刻是11时15分16秒
我们回过头来再看一下你的代码:
if cint(posttime)<>0 then '这个posttime是页面用来记住用户第一次发帖时间的变量,保存在
session里 ,因为在页面上,有可能某种原因或者别人仿仿造其他变量,所以有必要进行cint强制转换成
整形变量。当然,你不转换一般也不大会出错,但是总有那么万一嘛。
接下来。
if not isnull(session("posttime")) or cint(posttime)>0 then
判断,页面当中的用来记住用户第一次发帖的时间是不是为空。如果不为空且大于零,也就是说。能够记
住用户第一次发帖的详细时间。、就进行下面的代码
再接下来:、
if DateDiff("s",session("posttime"),Now())<cint(posttime) then
是用来判断,第二次发帖和第一次发帖的时间间隔是不是小于我们上面定义的posttime=15.如果小于15秒
就弹出了一个对话框,说。灌水机制已打开。
这时,你应该知道。DateDiff("s",session("posttime"),Now())中的posttime是你上面定义的15这个常
量。而<cint(posttime)这里的posttime是页面中用来存储用户发帖时间的变量。DateDiff("s",session
("posttime"),Now())这句话的意思是计算现在和第一次发帖时间间隔的。用秒来表示。(如果DateDiff
这个函数,你不懂,你可以百度一下。)
最后。你想一下,如果你不把now()存储在session里,会有什么结果。什么session?这里就是用来记住
用户发帖的时间点的。假如,用户发第一次贴,第二次和第一比较了。那第三次呢。怎么比较呢。当然是
第三次和第二次为起始点进行比较了。相同道理,第四次当然和第三次为起始点进行比较了。如果不存储
到session,那第三次,第四次怎么判断呢?是不是这个道理。我这么说,你就很容易理解了。
不说了。大白话,说的很详细了,很明白了。你提的问题,在里面都能找到。睡觉。-_- 。如果觉得好,别忘记了给我加分呀。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询