密码修改文件主要代码如下:
<form method="post" action="changepasssave.asp">
<td width="35%" height="32" align="center">输入新密码</td>
<input type="password" name="password" value="<%=rs("password")%>" size="18"></td>
</tr>
<tr>
<td width="35%" height="32" align="center">确认新密码</td>
<td width="65%" height="32" align="center">
<input type="password" name="confirmpassword" value="<%=rs("confirmpassword")%>" size="18"></td>
</tr>
<tr>
<td width="100%" height="32" colspan="2">
<div align="center"><input type="submit" name="Submit" value="确定"></div>
</td>
</tr>
</form>
保存修改文件代码如下:
<!--#include file=conn.asp-->
<%
dim sql
dim rec
password=request.form("password")
password=replace(password,"","'")
confirmpassword=request.form("confirmpassword")
confirmpassword=replace(confirmpassword,"","'")
set rec=server.createobject("adodb.recordset")
sql="update user set admin="&password&",confirmpassword="&confirmpassword&""
set rec=conn.execute(sql)
response.redirect "user.index.asp"
%>
错误提示如下:
错误类型:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E10)
[Microsoft][ODBC Microsoft Access Driver] 参数不足,期待是 1。
/changepasssave.asp, 第 14 行
(1)保证password和confirmpassword要有值;
(2)set rec=conn.execute(sql)改成
conn.execute(sql)
response.redirect "user.index.asp" 第 14 行是这里吗?
是不是这个文件名不对?
sql="update user set admin="&password&",confirmpassword="&confirmpassword&""
这一句从正常的命名规则来绝对有问题!
理由如下:
从这一句可以看出你的user表中有以下字段:admin,confirmpassword
从字面上理解,admin似乎应为管理员用户名,confirmpassword应该是验证密码
再从上面的第一个文件来看,在user表中还有一个password字段,这个字段应该是密码
所以sql语句的正确写法大概是这样的:
------------------------------
sql="update user set password=" & password & " and confirmpassword=" & confirmpassword & " where admin=" & 管理员的名字 & ""
------------------------------
即使如上写了且不出现错误了,也不能说明你的程序就是完美的了,你的程序存在的问题有:
1.password和confirmpassword至少应该进行判断是否为空,有一个为空就不能让他继续执行,而应该给出错误信息
2.password和confirmpassword至少应该进行比较看看是否相等,否则也要给出错误信息,停止下一步执行
3.数据库中的user表没必要设一个password和一个confirmpassword两个字段,再输入一遍密码的目的在于强制用户记忆密码和防止输错,表中只需要一个password就行了,从你的源码来看confirmpasswrod是不起任何作用的
4.执行更新语句update...时请务必记得使用where语句!!!尽管也有可能存在不需要是用where的情况,比如,只有一条记录的时候.但是如果你的记录多的了话,就会导致所有记录全部被更改...
有说错的地方,希望高手指点,谢谢!