2014-01-21 3 views
0
<%@ page import="java.sql.*"%> 
<% 
    String userid = request.getParameter("uname"); 
    String pwd = request.getParameter("pass"); 
    Class.forName("com.mysql.jdbc.Driver"); 
    Connection con = DriverManager.getConnection(
      "jdbc:mysql://localhost:3306/test", "root", ""); 
    Statement st = con.createStatement(); 
    ResultSet rs; 
    rs = st.executeQuery("select * from members where uname='" + userid 
      + "' and pass='" + pwd + "'"); 
    if (rs.next()) { 
     session.setAttribute("userid", userid); 
     //out.println("welcome " + userid); 
     //out.println("<a href='logout.jsp'>Log out</a>"); 
     response.sendRedirect("index.jsp"); 
    } 

    else { 
     out.println("Invalid password <a href='FirstPage.jsp'>try again</a>"); 
    } 
%> 

이것은 로그인 페이지의 코드입니다.비어있는 사용자 이름과 암호를 입력하면 JSp에서 로그인 페이지가 작동하지 않습니다.

데이터베이스에서 유효성을 검사하고 사용자가 존재하는지 확인하고 있습니다. 사용자가 존재하면 로그인은 성공하고 그렇지 않으면 오류 메시지가 사용자에게 표시됩니다. 빈 사용자 이름과 암호로 로그인하려고하면 로그인 할 수도 있습니다.

내 코드를 확인하고 내가 잘못했는지 알려주십시오.

+7

그냥 (!) 참고 : 당신은 당신의 스크립트가 SQL 주입에 매우 취약 알고 있습니다? – skiwi

+0

테이블에 빈 레코드가 있습니까? – subash

+0

하지만 내가 해달라고 그것은 ALl 브라우저에서 어떤 실수를 할 것입니까? – user2782773

답변

0
당신은 같은 유효성 검사를 수행하기 전에 빈 문자열을 확인할 수 있습니다

:

if(userid == null || pwd == null) { 
    request.sendRedirect("home.jsp"); // return; // do what ever you want to exit. } 
} 
관련 문제