2016-05-25 4 views
0

登録時に特定の電子メールIDを複数回使用しないことをお勧めします。私のコードは次のとおりです。電子メールIDが既にデータベースに存在するかどうかを確認するには

if(request.getParameter("btn1")!=null) 
    { 
     String unm=request.getParameter("nm"); 
     String em=request.getParameter("email"); 
     String pwd=request.getParameter("pass"); 
     Connect c1=new Connect(); 
     String q="insert into register(name,email,password) values('"+unm+"','"+em+"','"+pwd+"');"; 
    int rs=c1.DMLExecuter(q); 
    if(rs>0) 
    %> 
    <script> 
     alert("You are registered now. Please login to continue."); 
    </script> 

電子メールIDが2回使用されているかどうか確認するにはどうすればよいですか?

+0

ショート:主キーとしてDBにemail列を作ります。 Long:存在するかどうかのパラメータの電子メールチェックで選択クエリをまず実行し、次に挿入します。 – Naman

+1

してください! PreparedStatementの... –

+1

を使用してください!!!#2は未加工のパスワードをデータベースに保存しません。リトルボビーのテーブルは、そうでなければ、それらのすべてを盗むでしょう。 – zapl

答えて

1
  1. メールフィールドは、このような(これは電子メールアドレスが一意であることを確認するためにデータベースを取得します)に応じてDDLを適応させることなどによって、ユニークであることを確認してください。また、電子メールフィールドを作ることができる主キー:コードで

    CREATE TABLE register(
        ... 
        EMAIL VARCHAR(50) NOT NULL UNIQUE, 
        ... 
    ) 
    
  2. 、挿入する前には、そのIDによって、既存の電子メールの数を確認してください。

    long existingCount = ... 
    String countQuery = "SELECT COUNT(1) FROM register WHERE email = ?" 
    

値がrequest.getParameter("email")のこのクエリを実行します。 結果は、の既存のユーザーの番号を示す数字になります。その数と仮定すると

existingCount変数に格納されている:私のSQLはバインド変数を使用

if(existingCount == 0) { 
    //Put here the code to insert the new user as shown in your question... 
} else { 
%> 
    <script> 
     alert("You are already registered. Login or choose a different email"); 
    </script> 
<% 
} 

注意を、プリペアドステートメントを使用してください

+0

ありがとうございました:) –

関連する問題