以下用于更改密码的代码成功运行,但是当页面加载"密码更改失败时#34;消息已经出现。一旦我重置了密码,它就会改变。我甚至尝试使用隐藏的标签,但它仍然无法正常工作。
<form class="f1">
<p class="a">
<input type="text" name="oldpass" placeholder="Password">
</p>
<p class="a">
<input type="password" name="newpwd" placeholder="New Password">
</p>
<p class="a">
<input type="password" name="cnfrmpwd" placeholder="Confirm Password">
</p>
<br>
<input type="submit" name="submit" value="RESET">
<%
String olpass=request.getParameter("oldpass");
String newpass=request.getParameter("newpwd");
String conpass=request.getParameter("cnfrmpwd");
Connection con;
ResultSet rs=null;
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con = DriverManager.getConnection("jdbc:odbc:D");
PreparedStatement ps=con.prepareStatement("select * from AOI.dbo.Login where Password='"+olpass+"'");
rs=ps.executeQuery();
while(rs.next()){
i=rs.getString(1);
pas=rs.getString(2);}
if(pas.equals(olpass)){
PreparedStatement ps1=con.prepareStatement("update AOI.dbo.Login set Password='"+newpass+"' where Username='"+i+"'");
int i1=ps1.executeUpdate();%>
<p class="reset">Password has been Reset</p>
<% } else {%>
<p class="reset">Password change failed. Try again!</p>
<% }
}catch(Exception e){
out.println(e);
}
%>
答案 0 :(得分:0)
您正在接受&#34;密码更改失败&#34;因为当你加载页面。 else部分执行,因此您收到消息。
首次加载页面时,请求不包含任何数据。所以olpass
为空。您正在初始化pas
,您可能会将其初始化为空字符串,如String pass="";
所以&#34;&#34;不等于零,所以除了部分例外。
解决方案:
if(olpass!=null&&newpass!=null&&pas.equals(olpass))
{ //your code}
else if(olpass!=null||newpass!=null|``(olpass!=null&&newpass!=null&&!pas.equals(olpass)))
{//your code}