修改asp代码,

<%@LANGUAGE=VBScriptCodePage=936%><%OptionExplicitResponse.Buffer=TrueDimDbDimConnDb=... <%@ LANGUAGE = VBScript CodePage = 936%>
<%
Option Explicit
Response.Buffer = True
Dim Db
Dim Conn
Db = "data.mdb"
Call OpenConn
Sub OpenConn()
On Error Resume Next
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider = Microsoft.Jet.OLEDB.4.0;Data Source = " & Server.MapPath(Db)
If Err Then
Err.Clear
Conn.Close
Set Conn = Nothing
Response.Write "数据库连接出错,请检查连接字串。"
Response.End
End If
End Sub
Sub CloseConn()
On Error Resume Next
If IsObject(Conn) Then
Conn.Close
Set Conn = Nothing
End If
End Sub

dim rs,sql
dim username,password2
if Request("action")="save" then
username = Request.Form("username")
password2 = Request.Form("password2")
if username="" then
CloseConn
response.write "用户姓名不能留空!"
response.end
end if
if password2="" or not isnumeric(password2) then
CloseConn
response.write "延长密码未填写或者密码不是数字!"
response.end
end if
Set rs = Server.CreateObject("adodb.recordset")
sql="SELECT * FROM ku_user WHERE username='"&username&"' and password2="&password2&" and flag2=false"
rs.Open sql,Conn,1,3
if rs.eof and rs.bof then
rs.close
set rs=nothing
CloseConn
response.write "您填写的用户姓名或延长密码不正确或者延长密码已经被使用过!"
response.end
else
rs("flag2")=true
rs.update
rs.close
sql="SELECT * FROM ku_user WHERE username='"&username&"'"
rs.Open sql,Conn,1,3
dim etime,ntime
etime=rs("expiretime")
etime=left(etime,4)&"-"&mid(etime,5,2)&"-"&mid(etime,7)
ntime=DateAdd("m",Left(password2,1),etime)
ntime=year(ntime)&right("0"&month(ntime),2)&right("0"&day(ntime),2)
rs("expiretime")=ntime
rs.update
rs.close
set rs=nothing
response.write "恭喜!您的用户名已经延长到期时间。"
end if
response.end
end if
closeconn
%>
这段代码的作用是,输入用户名 和一个延期激活码,如果正确就延长数据库表中的时间。并且记录一下这个激活码已经被使用,下次不能用。(目前是这个样子)
这里面有一个问题需要修改一下,这里面输入的激活密码,要在用户名同一行下才能使用。
比如数据库中有用户名:张山,里面有很多激活密码,一定要输入与张山对应的才能使用,不然就不行。
我的意思就是 数据库中的密码 并不指定具体的用户名,只要存在就可以。
要把password2字段当成一个 独立的,不与前面的用户名关联起来。
只要密码存在password2字段里面,就继续运行,并记录一下已经使用 rs("flag2")=true
展开
 我来答
百度网友9cdda87
2011-01-12 · TA获得超过508个赞
知道小有建树答主
回答量:1108
采纳率:36%
帮助的人:349万
展开全部
再开一个表比如“jHm”,,这个表专门存入激活码的数据,,,激活码的字段为HM
这个表多加个字段,比如"XX"
XX字段的数据为0时代表未使用,,如果为1就代表已经使用。

用户在激活的时候,,如果用户提交的激活码是正确的,那么就直接写入双表,,

一个表是给这个用户延长时间,,,另外一就是给jHm表的相应激活码数据的XX字段修改为1

这样一来,,,用户在激活的时候必须要先判断jHm表内的数据是否未使用。

sql="SELECT xx FROM jhm WHERE hm="&password2&""
xx=rs("xx")

if xx=1 then
response.write "错误,此激活码已使用"
elseif xx=0 then
response.write "恭喜!您的用户名已经延长到期时间。"
end if
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ysh198554
2011-01-12 · TA获得超过167个赞
知道答主
回答量:210
采纳率:0%
帮助的人:73.1万
展开全部
看看 了 帮你顶了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
舞砜123
2011-01-12 · 超过34用户采纳过TA的回答
知道答主
回答量:216
采纳率:0%
帮助的人:70.9万
展开全部
你的问题不明确
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
znmero
2011-01-12 · TA获得超过119个赞
知道小有建树答主
回答量:368
采纳率:0%
帮助的人:206万
展开全部
错误是哪里?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
度老虎
2011-01-12 · TA获得超过1546个赞
知道大有可为答主
回答量:1661
采纳率:100%
帮助的人:2310万
展开全部
已发邮件
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式