0

フォームのphpアクションスクリプトからのメッセージを表示するにはどうすればよいですか?

フォームは、これらのフィールドを使用したユーザーログインです。

<div id="register_user_box" class="inline_form" style="position: absolute; top: 20px; right: 10px; <br/>
     <span id="user_msg"></span><br/>
     <form action="register_user.php" method="post"> 
     <input type="hidden" name="id" id="id" value="add" /> 
     <input type="hidden" name="edit_user" id="edit_user" value="y" />
     <table cellspacing="0px"> <tr><td>Username:</td></tr><tr><td>
     <input type="text" name="uname" size="30" value="" class="inline_input"/></td> </tr> <tr><td>Email:</td></tr><tr><td>
     <input type="text" name="uemail" size="30" value="" class="inline_input"/></td> </tr> <tr><td>Password:</td></tr><tr><td>
     <input type="password" name="upass" size="30" class="inline_input"/></td> </tr> <tr><td>Confirm Password:</td></tr><tr> <td> 
     <input type="password" name="cpass" size="30" class="inline_input"/></td></tr> </table></td></tr> </table> <p>
     <input class="button" type="submit" name="register" value="Register" style="float:right;"/></p>     
     </form>
</div>

phpスクリプトregister_user.phpは、パスワードが一致するかどうかを確認し、一致しない場合はエラーメッセージを表示します。スクリプトは他のすべてのフィールドをチェックし、必要に応じてメッセージを出力します。

<?php

    $messages = array( 'usr_cred_req' => 'Must specify username, email, password.',
                        'usr_name_bad' => 'Bad username selection.  Select a different usrename.', 
                        'usr_name_exists' => 'Username selected already exists.  Select a different username.',
                        'usr_email_bad' => 'Bad email selection.  Select a different email.',
                        'usr_email_exists' => 'Email selected already exists.  Select a different email.',
                        'usr_pass_notmached' => 'Passwords do not match.  Type passwords again.', 
                        'usr_not_added' => 'User not added.',
                        'usr_not_updated' => 'User not updated.',
                        'usr_added' => 'User added.'
                        );

    $username = trim($_REQUEST['uname']);
    $email = trim($_REQUEST['uemail']);
    $password = md5(trim($_REQUEST['upass']));
    $copasswd = md5(trim($_REQUEST['cpass']));


    if ( $password != $copasswd ) { echo '<script> $("#usr_msg").html("'.$messages['usr_pass_notmached'].'"); </script>'; return;}
?>

エラーメッセージは表示されず、ブラウザはページを離れます。ブラウザをページに表示したままにして、エラーメッセージをspanuser_msgに追加したいと思います。

4

3 に答える 3

1

フォームの送信時にブラウザがページを離れたくない場合は、AJAXを使用してバックグラウンドでフォームを送信し、サーバーと通信してから、エラーメッセージ(または別のメッセージ)でコンテナを更新する必要があります。成功した場合)。

または、PHPフォームをそれ自体に投稿し、HTMLを出力する前にエラーメッセージを確認し、エラーが発生した場合は、フォームマークアップの目的の場所にエラーメッセージを挿入し、フォームに次のすべての値を再入力します。もともと提出されました。

于 2012-04-17T00:47:35.823 に答える
0

http://jquery.malsup.com/form/

これが優れたjQueryAJAXフォームプラグインです。これにより、送信時にページが更新されなくなります。お役に立てれば。

于 2012-04-17T01:04:56.127 に答える
0

エラーメッセージを表示するためにJSスクリプトをエコーするのはなぜですか?あなたがそれを書き出す方法は、小さなポップアップを表示せず、あなたはそれを埋めるだけspanです。それを行うためのより良い方法は次のようなものです:

if ( $password != $copasswd ) {
   $display_msg = $messages['usr_pass_notmached']
}

次に、HTMLで次のようにします。

<span><?php echo $display_msg?></span>

変数が空の場合、何も表示されません。すべてのフィールドに対してこれを行うと、実際のフィールドがエラーであるかどうかに関係なく、フォームからのすべての情報がエラー時に返されるようになり、ユーザーがすべての情報を再入力する必要がなくなります。フォームにを実行して$_SERVER['PHP_SELF']、同じページが確実に再読み込みされるようにします

私はPHP機能(ユーザーがオフにすることはできません)を構築し、フォームが100%(またはそれに近い形で)正しく機能することを確認します。次に、そのスクリプトが機能するようになったら、JS機能を追加して既存のコードを補完します。

私が行っているのは、追加の配列を作成することです。この場合$display_msgは、すべての入力フィールドのチェックを実行します。フィールドに障害が発生した場合は、それを配列に追加して$display_msg['password']から、次のフィールドに移動します。すべてのフィールドがチェックされたら、$display_msg変数がチェックされているかどうかをチェックしますempty。空でない場合はspan、入力ボックスの横にあるすべての文字に、エラーを説明する赤い文字を入力します。これにより、フォームの最後まで機能している間、一度に1つずつではなく、すべてのエラーが同時に出力されます。各入力の横にはspan、指定された変数名のがあります。この例<?php echo $display_msg['password']?>では、次にユーザー名の横にあります<?php echo $display_msg['username']?>。これが十分に明確であり、役立つことを願っています。

于 2012-04-17T01:05:29.423 に答える