修改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 展开
<%
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 展开
5个回答
展开全部
再开一个表比如“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
这个表多加个字段,比如"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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
看看 了 帮你顶了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的问题不明确
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
错误是哪里?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
已发邮件
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询