0

送信ボタンがクリックされた後、特定の入力の値を覚えておきたいですか? 目的は、ユーザーがアカウントを登録しているときに、電子メールが存在するかパスワードが一致しないなどのエラーが発生した場合、名前、年齢などの値を保持したい場合です。現時点でコードは次のとおりです。どうすればよいですか? 助けや提案はありますか?ありがとう

<?php
        session_start();
        $errflag = false;
        $errmsg = array();
        if(isset($_SESSION['errmsg'])&&is_array($_SESSION['errmsg'])&&count($_SESSION['errmsg'])>0){
            foreach($_SESSION['errmsg'] as $msg){
                echo $msg;
            }
            unset($_SESSION['errmsg']);
        }
        ?>
        <form method="post">
            <table>
            <tr>
                <td>Last Name:</td><td><input id="txtfield" type="text" name="lname" autofocus="autofocus" required="required"></td>
            </tr>
            <tr>
                <td>First Name:</td><td><input id="txtfield" type="text" name="fname" required="required"></td>
            </tr>
            <tr>
                <td>E-mail:</td><td><input id="txtfield" type="email" name="email" required="required"></td>
            </tr>
            <tr>
                <td>Password:</td><td><input id="txtfield" type="password" name="pass" pattern=".{6,}" required="required"></td>
            </tr>
            <tr>
                <td>Re-type:</td><td><input id="txtfield" type="password" name="rpass" pattern=".{6,}" required="required"></td>
            </tr>
            <tr>
                <td></td><td><input id="btn" type="submit" name="register" value="Register"></td>
            </tr>
            </table>
        </form>
        <?php
        include 'functions/functions.php';
        if(isset($_POST['register'])){
            $result=ValidateEmail($_POST['email']);
            if($result){
                $errmsg[] = '<p id="error"><img src="img/error.png" alt="error">This email address is already in use.</p>';
                $errflag = true;
            }
            if($_POST['pass']!=$_POST['rpass']){
                $errmsg[] = '<p id="error"><img src="img/error.png" alt="error">Passwords does not match.</p>';
                $errflag = true;
            }
            if($errflag){
                session_regenerate_id();
                $_SESSION['errmsg'] = $errmsg;
                session_write_close();
                $errflag = false;
                header('location: register.php');
                exit();
            }
            else {
                $user = array('lname'=>$_POST['lname'],'fname'=>$_POST['fname'],'email'=>$_POST['email'],'pass'=>$_POST['pass']);
                RegisterUser($user);
                session_regenerate_id();
                $errmsg[] = '<p id="success"><img src="img/success.png" alt="success">Your account is now active. You may now login.</p>';
                $_SESSION['errmsg'] = $errmsg;
                session_write_close();
                header('location: index.php');
                exit();
            }
        }
        ?>
4

3 に答える 3

1

ajax/javascript を使用して、パスワードが一致しないか、ユーザー名が既に存在するかどうかを確認します。そうすれば、実際にページを変更せずにデータベースにクエリを実行できます。

したがって、フィールドが埋められたままになります。これは w3schoolsの小さな例です

于 2012-08-25T06:16:07.003 に答える
0
 <form method="post">
     <input id="txtfield" type="text" name="lname" autofocus="autofocus" required="required" Value=<?php $lname ?>/>

すでに同じページに投稿しています。今できることは次のようなものです。

 $lname = ""; //and all the other fields
 $fname = "";
 if ($_POST['lname'] == "")
 {
    $fname = $_POST['fname'];//and all the other fields
    //put all the variables back into the form and display an error text
 }
 else
 {
    //Lets do the whole form processing and submit here
 } 

つまり、空白の変数を使用して、入力フィールドのすべての値を設定します。エラーが発生した場合は、これらすべての変数を元の値に設定します。

于 2012-08-25T06:23:27.123 に答える
0

私の理解によると、送信された変数が間違っているか、送信されていない場合にフォームに再び表示されるようにする必要があります。

HTML コードを次のように置き換えます。

    <form method="post">
        <table>
        <tr>
            <td>Last Name:</td><td><input id="txtfield" type="text" name="lname" value="<?=$_POST['lname'];?>" autofocus="autofocus" required="required"></td>
        </tr>
        <tr>
            <td>First Name:</td><td><input id="txtfield" type="text" name="fname" value="<?=$_POST['fname'];?>" required="required"></td>
        </tr>
        <tr>
            <td>E-mail:</td><td><input id="txtfield" type="email" name="email" value="<?=$_POST['email'];?>" required="required"></td>
        </tr>
        <tr>
            <td>Password:</td><td><input id="txtfield" type="password" name="pass" pattern=".{6,}" required="required"></td>
        </tr>
        <tr>
            <td>Re-type:</td><td><input id="txtfield" type="password" name="rpass" pattern=".{6,}" required="required"></td>
        </tr>
        <tr>
            <td></td><td><input id="btn" type="submit" name="register" value="Register"></td>
        </tr>
        </table>
    </form>
于 2012-08-25T06:27:12.957 に答える