0

fregister と register の 2 つの形式があります。最初のフォームでは、名前、ユーザー名を入力し、[ユーザー ID の確認] ボタンをクリックしてユーザー名の可用性を確認しています。彼は前に満たした。

<?php RegFormCrAndValid($name,$username,$email) {?>
    <form name="fregister"  method="post">
        <table>
        <tr><td>Name</td>
        <td><input type="text" id="name" name="name" value ="<?php echo $name;?>" onChange="ValidAllAlpha()" required></td>
        <td><span id="ErrorName"></span></td></tr>
        <tr><td>Username</td>
        <td><input type="text" id="user" name="UsrText" value="<?php echo $user;?>" required onblur="SetNextElement()"></td>
        <td><?php  echo $_SESSION['ErrorUserMsg']?></td> <td><input type="submit" name="CheckUsr" value="Check User ID"></td> </tr> </form>

2 番目のフォームでは、ユーザーはここで最初に空き状況を確認して登録し、[登録] をクリックして送信します。このフォームでも、ユーザーが正常に登録されていない場合は、入力フィールドを含むメッセージを表示します。

<form name="register" method="post">
    <td style="display:none"><input type="text" id="fname" name="fname" required></td>
    <td style="display:none"><input type="text" id="fuser" name="fuser" required></td>
    <tr><td>Email</td>
    <td><input type="email" id="email" name="email" value="<?php echo $email;?>" onChange="ValidateEmail()" required></td>
    <td><span id="ErrorEmail"></span></td></tr>
    <tr><td><input type="submit" name="submitForm" value="Submit" onClick="ValidationCheckOnSubmit('register');return false;"></td></tr>
    </form>
</body>
</html>

2 つの行は、javascript を使用してフォーム fregister から名前とユーザー名の値を取得して表示しているため、ここには表示されません。

JavaScript コード // 検証があります。ここでは、値を fname と fuser に渡すためのコードについて言及しています。

 function SetNextElement()
                {           
                         document.getElementById('fname').value = document.getElementById('name').value;

                document.getElementById('fuser').value = document.getElementById('user').value;
                }
<?php }?> //RegFormCrAndValid($name,$username,$email) this function getting closed over here

PHPコーディング

if(isset($_POST['CheckUsr']))
    {
        if(IsUsernameAvail($_POST['UsrText'])) //IsUsernameAvai checking for the username availabilty return true if available as false
        {   
            $_SESSION['ErrorUserMsg']="<font color=red>This Username Is Available</font>";
        }
        else
        { 
            $_SESSION['ErrorUserMsg']="<font color=red><--Username is not available</font>";
        }

    }

    if(isset($_POST['submitForm']))
    {
        if(IsUsernameAvail($_POST['fuser']))
        {   
            echo 'You have been successfully registered'; 
        }
        else
        { 
            $_SESSION['ErrorUserMsg']="<font color=red><--Username is not available</font>";
            RegFormCrAndValid($_POST['fname'],$_POST['fuser'],$_POST['email']);
        //RegFormCrAndValid($name,$username,$email) is the function in which whole html and javascript code is there to create and validate the form.
        }

    }
    else{   if(isset($_POST['CheckUsr']))
            {

                RegFormCrAndValid($_GET['name'],$_POST['UsrText'],'');

            }
            else  RegFormCrAndValid('','','');

        }

私の問題

  1. CheckUserIdボタンをクリックしている間、ページをそこにとどめておきたいのですが、クリックした後、ユーザーが入力したすべてのフィールドが同じページに留まらないのはなぜですか。チェックを実行するだけでよいのですが、ページがリロードされるのはなぜですか?
  2. 同じページにとどまることができれば、フォームを再構築するために RegFormCrAndValid($name,$username,$email) この関数を再度呼び出す必要はありません。
  3. 実際の登録フォームには多くのフィールドがあり、それらすべてに偽の呼び出しや割り当てを行うことはできないため、ユーザー名と名前を再度表示するために偽の列を使用することを根絶したいと考えています。

私は ajax や jquery を使用したくありません。javascript、php、および html を使用してすべてを達成したいと考えています。

4

2 に答える 2

1

フォームを<input type="submit" name="CheckUsr" value="Check User ID">クリックすると送信されます。これは、それをブロックして何か他のことをする JavaScript を持っていない限り、送信ボタンをクリックすることです。

ページがサーバーに送信されると、ページがリロードされます。

ここで、基本的な目標に戻ります。ユーザー名が使用可能かどうかを判断するために行っている実際のチェックはサーバー側にあること、つまりロジックがサーバーにあることを理解する必要があります。一方、ユーザーがユーザー名を入力するフォームはクライアント側にあり、ユーザーのコンピューターに常駐し、ブラウザーを介して表示されます。ユーザーが名前を入力したら、そのデータをサーバー側に渡して、チェックを行い、それに応じてアクションを実行する必要があります。したがって、次の 2 つのオプションがあります。

a)現在のフォームを送信し、サーバー側のphpコードを使用して、ユーザーが入力したすべてのデータを収集し、再度入力します

b) フォームを送信せず、php スクリプトに ajax リクエストを送信するだけです。これにより、入力としてユーザー名が取得され、javascript を使用してキャッチできる true または false の応答が返され、それに応じてフォームの送信が許可されます。未提出。

その場合、送信ボタンのonclickイベントまたはフォームのonsubmitイベントトリガーで、ajaxリクエストを作成するJavaScript関数を設定し、ajaxリクエストがfalseを返す場合は「falseを返す」、ajaxリクエストがtrueを返す場合は「trueを返す」を設定します。また、「false ケース」では、getElementById を使用してユーザーのエラー メッセージを設定できます。

于 2013-08-15T13:25:08.283 に答える