2014-03-27 2 views
-2

안녕하세요. 암호로 입력 한 내용과 일치하는지 확인하려고합니다. 몇 시간 동안 웹을 검색했는데 시도한 다른 모든 내용이 작동하지 않습니다.입력 한 비밀번호가 입력 된 이메일과 관련된 비밀번호인지 어떻게 확인합니까?

try { 
    Class.forName(driver).newInstance(); 
    Connection conn = (Connection) DriverManager.getConnection 
         (url + dbName, userName, password); 
    PreparedStatement checkUserInfo = (PreparedStatement) conn.prepareStatement 
             ("SELECT password FROM profiles WHERE email = ?"); 
    checkUserInfo.setString(1, emailT); //emailT is email pulled from an editText 
    //checkUserInfo.setString(2, pass1); 
    //Statement state = (Statement) conn.createStatement(); 
    //String querychk = "SELECT * FROM profiles WHERE email = '"+emailT+"'"; 
    //ResultSet rs = state.executeQuery(querychk); 
    ResultSet rs = checkUserInfo.executeQuery(); 
    while (rs.next()){ 
     String pass = rs.getString(2); 
     if (pass.equals(pass1)) { 
      return success; 
     } 
    } 
    conn.close(); 
} 
catch (Exception e) { 
    e.printStackTrace(); 
} 
+4

** 암호를 일반 텍스트로 저장하지 마십시오. 이제까지. – tadman

+0

DB 쿼리 이후에 값을 얻고 있습니까? – LorenzoR

+1

댓글을 게시 한 이유는 무엇입니까? 소개를 읽어보십시오. http://stackoverflow.com/questions/549/the-definitive-guide-to-form-based-website-authentication/ –

답변

0

은 간단하게 당신의 SQL 쿼리를 수정 :

"select * from profiles where email=? and password=?" 

할 인식 유효성을 입력 필드에 SQL 주입으로부터 방지하기위한

PreparedStatement 객체 또는 Connection 객체를 가져 오기 위해 외부에서 타입 변환하지 않아도 객체에 할당 한 것과 동일한 객체를 반환합니다. 심지어 자바 의사는 PreparedStatement에 대한 아래 진술을 제공했습니다.

PreparedStatement pstmt = con.prepareStatement(Query); 
+0

이것은 도움이되었지만 내 문제가 무엇인지 밝혀 졌는데 'PreparedStatement checkUserInfo = (PreparedStatement) conn.prep ....'가 아니었다. 'java.sql.PreparedStatement checkUserInfo = conn'이 필요하다 \t \t .prep ... ' – SketchyTurtle

+1

자리 표시자를 사용하여 준비된 문은 SQL 삽입 문제가 없어야합니다. 이 시점에서 검증은 부차적 인 문제입니다. – tadman

+0

@SketchyTurtle 당신은 그것을 한 번만 가져와야하고 그것을 액세스 할 수 있습니다. java.util과 java.awt의 목록 –

관련 문제