国家典籍博物馆安徒生:修改用户密码的asp代码,哪位高手看看哪里出了问题?解决问题后再加20悬赏分

来源:百度文库 编辑:神马品牌网 时间:2024/05/11 18:44:15
修改密码模块名称:Changepwd.asp
代码如下:
<!--#include file="conn.asp"-->
<%
dim password,newpassword,newpasswordtemp,userid
if Request.Form("submit")="提交" then
userid = session("userid")
password = Request("password")
newpassword = Request("newpassword")
newpasswordtemp = Request("newpasswordtemp")
if session("password") <> password then
Response.Write "<center>对不起,您输入的旧密码不正确.请重试!</center>"
Response.end
elseif newpassword <> newpasswordtemp then
Response.Write "<center>对不起,新密码与新密码确认不同.请重试!</center>"
Response.end
end if

dim rs,sql
set rs = Server.CreateObject("ADODB.Recordset")
sql="update tb_Student set Pwd='" & newpassword & "' where UserID="& userid
rs.Open sql,conn,1,1
Response.Write "<center>密码修改成功,请切记您的新密码:'" & newpassword & "'</center>"
Response.end
elseif Request.Form("submit")="返回" then
Response.Redirect "Selfinfo.asp"
end if
%>
<HEAD>
<TITLE>修改密码页面</TITLE>

</HEAD>
<BODY>
<BR><BR><CENTER><FONT SIZE="5" COLOR=blue FACE="黑体">修改个人密码页面</FONT></CENTER><BR><BR>
<FORM METHOD=POST ACTION="Changepwd.asp">
<TABLE align=center width="60%" border="1" cellspacing="0">
<TR>
<TD bordercolor="#6699FF" bgcolor="#6699FF">
<FONT FACE="隶书" SIZE="4" COLOR="#FF0000">更改密码:</FONT>
</TD>
</TR>
<TR>
<TD>
<FONT COLOR=red>*</FONT>您的旧密码:<INPUT TYPE="password" NAME="password" size=20 maxlength=6>
<FONT SIZE="" COLOR="">(长度不超过6位,下同)</FONT><BR><HR>
<FONT COLOR=red>*</FONT>输入新密码:<INPUT TYPE="password" NAME="newpassword" size=20 maxlength=6><BR>
<FONT COLOR=red>*</FONT>新密码确认:<INPUT TYPE="password" NAME="newpasswordtemp" size=20 maxlength=6><BR>
</TD>
</TR>
<TR>
<TD bordercolor="#6699FF" bgcolor="#6699FF" align=center>
<P><input type="submit" value="提交" name="submit">
<input type="reset" value="重写" name="B2">
<input type="submit" value="返回" name="submit"></P>
</TD>
</TR>
</TABLE>
</FORM>
</BODY>
</HTML>

其中session("userid")已经定义过了,提示的错误信息如下:

Microsoft VBScript 编译器错误 错误 '800a03f6'

缺少 'End'

/iisHelp/common/500-100.asp,行242

Microsoft JET Database Engine 错误 '80040e07'

标准表达式中数据类型不匹配。

/xu/复件 《通信原理》题库系统(06-05-29上)/Changepwd.asp,行23

第23行为:rs.Open sql,conn,1,1
回2楼:
改为rs.Open sql,conn,1,3 后还是同样的错误

我加上end if 之后出现下面错误:
Microsoft VBScript 编译器错误 错误 '800a03f6'

缺少 'End'

/iisHelp/common/500-100.asp,行242

Microsoft VBScript 编译器错误 错误 '800a03ea'

语法错误

/xu/复件 《通信原理》题库系统(06-05-29上)/Changepwd.asp,行27

elseif Request.Form("submit")="返回" then
^

首先要理解rs.open conn,1,3的意思
open只是一个recordset实例的一个方法
用来打开和查询一个表段中的一个或多个字段
并不能直接进行修改和删除操作
但是可以配合update方法使用

有一种更简捷的办法就是使用execute方法
修改后的代码如下:
set rs = Server.CreateObject("ADODB.Recordset")
sql="update tb_Student set Pwd='" & newpassword & "' where UserID="& userid
'下面这句就是使用execute代替open和update
rs.execute(sql)
Response.Write "<center>密码修改成功,请切记您的新密码:'" & newpassword & "'</center>"
Response.end
elseif Request.Form("submit")="返回" then
Response.Redirect "Selfinfo.asp"
end if

你确定你的IIS现在支持中文目录。
你现在将
复件 《通信原理》题库系统(06-05-29上)
改成英文。

首先,你在下面这段后面加个end if
Response.Write "<center>对不起,您输入的旧密码不正确.请重试!</center>"
Response.end
elseif newpassword <> newpasswordtemp then
Response.Write "<center>对不起,新密码与新密码确认不同.请重试!</center>"
Response.end
end if
在把第23行为:rs.Open sql,conn,1,1
改为rs.Open sql,conn,1,3
然后再检查一下你提交的数据和数据库设置的类型是否一致!

elseif Request.Form("submit")="返回" then
改为
else if Request.Form("submit")="返回" then
就是在ELSE后面加个空格!