2013-04-29 39 views
0

所以我只是搞乱了JSP并尝试创建一个登录表单,现在当我输入“test”作为用户名和“test”作为它应该登录的密码,因为该帐户是在数据库中创建的。它不是“登录”,而是显示“不正确的用户名:test”文本,然后在新行上显示从我写的方法返回的数据库值,即“test”。比较字符串都是正确的,但执行其他方式

请帮我解决这个问题,它真的开始打扰我了。

这是我的代码:

String userID = request.getParameter("username").trim(); 
String pass = request.getParameter("password").trim(); 

String corrUserID = MySQL.getString("SELECT username FROM users WHERE username='" + userID + "'", "username").toString(); 
String corrPass = MySQL.getString("SELECT password FROM users WHERE username='" + pass + "'", "password").toString(); 

if(corrUserID != "String" && corrPass != "String" && userID != "Username" && pass != "Password"){ 
    if(userID == corrUserID){ 
     if(pass == corrPass){ 

      out.println("Logged in!"); 
      response.sendRedirect("index.jsp"); 

     }else{ 
      out.println("Incorrect password."); 
     } 
    }else{ 
     out.println("Incorrect username: " + userID + "<br/>" + corrUserID); 
    } 
}else{ 
    out.println("Please enter a valid username and password."); 
} 
+1

**不要以明文存储密码** – SLaks 2013-04-29 17:22:59

+0

您有一个SQL注入漏洞。 – SLaks 2013-04-29 17:23:40

+0

不要阻止用户使用前导或尾随空格的密码。 – SLaks 2013-04-29 17:24:05

回答

0

使用equals()比较String

if(userID.equals(corrUserID)) 

==测试引用的相等性。

.equals()测试值是否相等。

+0

谢谢!你让我放弃了,我一直认为.equals()和==一样,谢谢你告诉我。 :) – ShadowParallax 2013-04-29 17:53:34