2016-07-25 6 views
-1

このコードは、mysqlテーブルに挿入レコードがありますが、ログインのように既に存在しているmysqlカラムとjsp/html textboxes文字列を比較したいと思います。これは私がmysqlデータベーステーブルレコードから2つの入力文字列を比較するには?

  1. が、私はこれを行うことができますどのようにMySQLの列データを入力文字列を比較mysqlのクエリを変更するには知っていページが

    2つのことをログインするのですか?

NewServlet.java

  public class NewServlet1 extends HttpServlet { 
     protected void processRequest(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException { 
     response.setContentType("text/html;charset=UTF-8"); 
     PrintWriter out = response.getWriter(); 

     String name=request.getParameter("username"); 
     String abc=request.getParameter("password"); 

     aaaa c1=new aaaa(); 

     try{ 

      String Sql="Select * from login where username='"+name+"' AND password='"+abc+"'"; 

      c1.st.executeUpdate(Sql); 
     } 
     catch(SQLException ex) 
     { 

     out.println(ex); 

     } 

     try { 

     out.println("<html>"); 
     out.println("<head>"); 
     out.println("<title>Servlet NewServlet1</title>");    
     out.println("</head>"); 
     out.println("<body>"); 
     out.println("<h1>Servlet NewServlet1 at " + request.getContextPath() + "</h1>"); 
     out.println("</body>"); 
     out.println("</html>"); 
    } finally {    
     out.close(); 
    } 
    } 

aaaa.java //このクラスは//

  public class aaaa { 

      Connection c1 = null; 
      Statement st = null; 
      ResultSet rs = null; 
      aaaa(){ 
      try { 
      Class.forName("com.mysql.jdbc.Driver"); 
      c1 = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/teacher","root", "abcde"); 

      } 
      catch (Exception cnfe) { 
       System.out.println("Couldn't find the driver!"); 
       System.out.println("Couldn't connect: print out a stack trace and exit."); 
       System.out.println("We got an exception while creating a statement:" + "that probably means we're no longer connected."); 
       } 
      try { 
       st = (Statement) c1.createStatement(); 
       System.out.println("Statement Created Successfully"); 
       } catch (SQLException se) { 
       System.out.println("We got an exception while creating a statement:" + "that probably means we're no longer connected."); 
       se.printStackTrace(); 
      } 
      if (c1 != null) { 
       System. out.println("Hooray! We connected to the database!"); 
      } else { 
       System.out.println("We should never get here."); 
      } 
      } 
     } 
+1

あなたは[SQLインジェクション攻撃](http://bobby-tables.com) –

+0

に脆弱ですなぜ私のコードを改善しようとしませんか?私はあなたのコードがテーブルにデータを挿入していますが、ユーザー名やパスワードのような入力文字列からテーブルの既存のデータを比較したい場合 –

+1

まず宿題をしなければならないからです。 SQLを学ぶには、利用可能なチュートリアルがたくさんあります(例えば、[Code School](https://www.codeschool.com/courses/try-sql)の無料コース) - 特に、 'SELECT'コマンドとその' WHERE'節。あなたは基本を教えてくれるわけではありません。 –

答えて

0

データベース接続のためにSQL文字列のコードでコメント

String Sql="Select * from login where username='"+name+"' AND password='"+abc+"'"; 

は、SQLインジェクションに対して脆弱です。ユーザーがデータベースに存在するユーザー名のようなものを入力した後、ユーザー名のコメント文字を入力すると、アプリケーションがユーザーを認証するため、脆弱です。いくつかの狂ったハッカーは同じテクニックであなたのログインテーブルを削除することもでき、あなたのアプリケーションはダウンします。

** SQLインジェクションの対策:** 入力を解析するためにprepared statementを使用してください。 参照:How to use prepared statement for select query in Java?

質問に答えるには、クエリにユーザー入力を渡して、結果セットが次の機能を持っているかどうかを確認してください(そのようなものがあります! );そうであれば、ユーザーに何もしないでください。

+0

文字列をmysqlテーブルレコードjavaと比較するには? –

+0

私はすでに答えを出しました。私は生のサーブレットを使用しません。フロントエンドからユーザーの入力を取得し、承認を行うメソッドに渡します。クエリからユーザー名とパスワードを取得する場合は、結果セットから取得するようにしてください。いったんそれらを持っていれば、java StringのequalsまたはequalIgnoreCaseメソッドを使って文字列を比較できます。 – cdaiga

+0

私は、クエリからユーザー名とパスワードを取得し、結果セットから取得することについて話していました。いったんそれらを持っていれば、java StringのequalsまたはequalIgnoreCaseメソッドを使って文字列を比較できます。 - cdaiga –

関連する問題