asp +access 数据库更新问题

来源:百度知道 编辑:UC知道 时间:2024/07/01 02:07:33
我想在我的网站首页记录访问者的IP信息,但是我自己访问时则不记录,我自己电脑的IP是"10.115.35.3",我编写了如下代码:
<%
dim conn
set conn=server.createobject("adodb.connection")
sqlstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("data/db.mdb")
conn.Open sqlstr

dim myip
myip=request.servervariables("remote_addr")
if myip<>"10.115.35.3" then ' 10.115.35.3 是本机的IP,
sql="insert into vist(IP,DAT,TIM) values('"&myip&"',#"&date&"#,#"&time&"#)"
conn.execute sql
end if%>

在执行时,如果有人访问,则会向数据库中同时写入多条同样的记录,也就是说,相当于同一个人不断的刷新了多次首页,不知问题出在什么地方?请教网络高手.谢谢了!
下面信息是IP为10.115.90.12的客户访问一次首页时的结果,正常情况下应该只有一条记录,但这里记录了4条!注意,这个结果不是客户刷新页面得到的!
1 10.115.90.12 2008-7-21 8:33:06 信息办
2 10.115.90.12 2008-7-21 8:33:06 信息办
3 10.115.90.12 2008-7-21 8:32:35 信息办
4 10.115.90.12 2008-7-21 8:32:35 信息办

作一些防刷新的处理吧

你只是限制了自已访问不更新

但其它用户每点一次肯定是插入一次,或者干脆按F5就会不停的插入记录。

你可以使用cookie判断客户端是否访问过,再考虑插入

如果访问量不大的话,每次都先查一下vist的最后一条记录,看看ip和间隔时间,再根据需要插入处理。

你这不是这个人每动一次,就记录一次么?
不多才怪,你还要判断,当前获取的来IP是否在表中已有
如果有,你可以做个统计字段,只加1而不新加记录。
如果你需要的是一天一统计,还要判断,这个IP在今天是否已经来过,也就是判断这个IP是否已在表中的同时,还要判断,加入日期,是不是今天。这样就可以了。
====================
如果你这段代码放到一个公共文件里,
而这个文件又在同一页被调用两次,自然会出现相同数据?
你需要做的就是判断,如果存在就做其他操作,具体根据你的需求,我上边已经说了。

<%
dim conn
set conn=server.createobject("adodb.connection")
sqlstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("data/db.mdb")
conn.Open sqlstr

dim myip
dim rs
myip=request.servervariables("remote_addr")
if myip<>"10.115.35.3" then ' 10.115.35.3 是本机的IP,
set rs=server.createobject("adodb.recordset")
sql="select * from vist where IP='" & myip & "&