问题描述
小弟有一个登陆系统的时候出问题了,用的是ACCESS的OLEDB的数据库连接方式,但是在管理员登陆时出错。具体情况是:浏览器提示:MicrosoftJETDatabaseEngine(0x80004005)操作必须使用一个可更新的查询。/WishWall/admin/chklogin.asp,第36行我的chklogin.asp的内容是:<!--#includefile="conn.asp"--><!--#includefile="md5.asp"--><%'用于防止sql注入DimLove_NoSqlHack_AllStr,Love_NoSqlHack_Str,Love_NoSqlHack_ComeUrlGet,Love_NoSqlHack_ComeUrlPost,Love_NoSqlHack_Get,Love_NoSqlHack_Post,Love_NoSqlHack_iLove_NoSqlHack_AllStr="'|;|and|chr(|exec|insert|select|deletefrom|update|mid(|master."Love_NoSqlHack_ComeUrlPost=Request.FormLove_NoSqlHack_Str=Split(Love_NoSqlHack_AllStr,"|")'PostIfLove_NoSqlHack_ComeUrlPost<>""thenForEachLove_NoSqlHack_PostInRequest.FormForLove_NoSqlHack_i=0ToUbound(Love_NoSqlHack_Str)IfInstr(LCase(Request.Form(Love_NoSqlHack_Post)),Love_NoSqlHack_Str(Love_NoSqlHack_i))<>0ThenResponse.Write("请误使用非法途径进入本网站!")Response.EndEndifNextNextEndif%><%AdminName=trim(Request.form("AdminName"))password=trim(Request.form("password"))ifAdminName=""orpassword=""thenResponse.Redirect("adminlogin.asp")endifpassword=md5(trim(password),16)setrs=server.createobject("adodb.recordset")sql="select*fromadminwhereAdminName='"&AdminName&"'andpassword='"&password&"'"setrs=Conn.Execute(sql)ifnotrs.eofandnotrs.bofthenConn.Execute("updateadminsetLogincount=Logincount+1,LoginTime='"&now()&"',LoginIP='"&Request.ServerVariables("REMOTE_ADDR")&"'whereAdminName='"&AdminName&"'andpassword='"&password&"'")Session("Admin")=rs("AdminName")Session("IsAdmin")=trueSession.timeout=900Response.Redirect("adminindex.asp")elseResponse.Write"请输入正确的管理员名字和密码!<ahref='javascript:history.back(-1)'>返回</a>"Response.Endendifrs.closesetrs=nothingCloseConn()%>第36行是Conn.Execute("updateadminsetLogincount=Logincount+1,LoginTime='"&now()&"',LoginIP='"&Request.ServerVariables("REMOTE_ADDR")&"'whereAdminName='"&AdminName&"'andpassword='"&password&"'")希望各位大侠能给小弟解决一下,不甚感激!!!!!
解决方案
解决方案二:
Conn.Execute("updateadminsetLogincount=Logincount+1,LoginTime='"&now()&"',LoginIP='"&Request.ServerVariables("REMOTE_ADDR")&"'whereAdminName='"&AdminName&"'andpassword='"&password&"'")==Conn.Execute("updateadminsetLogincount=Logincount+1,LoginTime=#"&now()&"#,LoginIP='"&Request.ServerVariables("REMOTE_ADDR")&"'whereAdminName='"&AdminName&"'and[password]='"&password&"'")
解决方案三:
Conn.Execute("updateadminsetLogincount=Logincount+1,LoginTime='"&now()&"',LoginIP='"&Request.ServerVariables("REMOTE_ADDR")&"'whereAdminName='"&AdminName&"'and[password]='"&password&"'")
解决方案四:
现在已经调试成功了,我把他们加到dreamwear里面,然后建了个新站点就可以了,我也不知道为什么,各位大侠能给小弟解释一下是为什么吗?多谢!
解决方案五:
1.password在Access中是关键字,要用[]包起来2.Access中的日期定界符是
解决方案六:
#出現這個錯誤一般是由於資料庫連接未正常關閉然後又打開,即你看MDB時會看到有個鎖定的狀態這種情況可重啟IIS,再重新登錄看看