2009-10-26 5 views
5

これで新しく私の無知を許します。フォームに「パスワードを確認する」フィールドを追加する方法を理解しようとしています。 PHPとmySQLの使用これはHTMLフォームコードに入力されていますか?また、パスワードとパスワードフィールドが一致していることを自動的にチェックするように設定する方法はありますか。パスワードを確認しますか?

+2

これはMySQLとどのように関連していますか?両方のパスワードフィールドをDBに保存し、一致するように制約を設定しますか?もしそうなら、それはUI ... – dcrosta

答えて

16

だけでパスワードの両方を取得し、平等のためのPHPとテストを提出する形式でパスワードフィールドを確認してください。

passwordconfirm_passwordは、パスワードのHTMLテキスト入力のIDで
if ($_POST["password"] === $_POST["confirm_password"]) { 
    // success! 
} 
else { 
    // failed :(
} 

1

フレームワークを使用していますか?そうでない場合は、保存後に両方のフィールドが設定され、$ confirmationPassword == $ passWordであることを確認するのと同じくらい簡単でなければなりません。次に、SQLに格納する前に、パスワードに必要な検証を適用します。

4

あなたがしようとしているのはフォーム検証です。 (JavaScriptを使用して)クライアント側で検証するのは良い考えです。そのため、ユーザーはインターフェース上とサーバー側でユーザーの応答が速くなります(ユーザーはJavaScriptを無効にできます)。はまったく信頼できません。この件についての詳細は、Should you do validation on your server sideを参照してください)。

投稿された2つの値を比較するだけです。正しい場合は、データベースに挿入します。そうでない場合は、何もしないで、パスワードが間違っているというメッセージをユーザーに返します。

あなたのphp環境(使用されているフレームワーク、使用されているlibsなど)に関する十分な情報や詳細な情報を提供していないので、私は詳細を述べることはできません。

+1

"とあなたのサーバ側であなたのユーザがJavaScriptを無効にすることができるので、この制約を強制する最善の方法ではありません。 - これはサーバー側の検証を使用する理由ではありません。 – strager

+2

そうです、そうです。クライアント側の検証は便利ですが、サーバー側の検証では、クライアント側の問題が確実に考慮されます。 – ceejayoz

+1

「なぜjavasctip検証を書くことができないのですか?」と思っていたのですが、私はサーバ側で検証するよう書いていました。私は簡単な答えでセキュリティに関するすべての情報を提供することはできません。 – GmonC

2

あなたはケースのクライアントに再度チェックする必要があり

<html><title></title><head> 
<script> 
     function validate(){ 

    if(!document.getElementById("password").value==document.getElementById("confirm_password").value)alert("Passwords do no match"); 
    return document.getElementById("password").value==document.getElementById("confirm_password").value; 
    return false; 
    } 
    </script> 
</head> 
<body> 
    <form onSubmit="return validate()" action="nextPage.php"> 
    Password: <input type="text" id="password" name="password" /><br/> 
    Reenter Password: <input type="text" id="confirm_password" name="confirm_password" /> 
    <input type="submit" value="submit"/> 
    </form> 
</body> 
</html> 

そして、サーバ側を使用して、JavaScriptでそれを確認することができますJavaScriptが有効になっていません、

if($_GET['password']==$_GET['confirm_password']) 

あなたは$ _POSTを使用する必要がありますPOSTメソッドの場合は$ _GETではなく

+0

パスワードに関してGETを使用したいですか? POSTのように思えます... – Dscoduc

+0

あなたは正しいパスワードです。私たちはPOSTメソッドを使う必要があります。私はちょうど例を挙げました。 – Xinus

2

コードを更新しました。フォーム送信時にコロンがありません。

<html> 
    <title></title> 
    <head> 
    <script> 
     function validate(){ 

      var a = document.getElementById("password").value; 
      var b = document.getElementById("confirm_password").value; 
      if (a!=b) { 
       alert("Passwords do no match"); 
       return false; 
      } 
     } 
    </script> 
    </head> 
    <body> 
     <form onSubmit="return validate();" "> 
     Password: <input type="text" id="password" name="password" /><br/> 
     Re-enter Password: <input type="text" id="confirm_password" name="confirm_password" /> 
     <input type="submit" value="submit"/> 
     </form> 
    </body> 
</html> 
関連する問題