-1

このフォームを適切に検証する方法に行き詰まっています。実際、そのような作業ですが、正しい/間違ったものを入力して送信ボタンを押すと、テキストが入力フィールドに保存されず、すべてをもう一度入力する必要があります。私は PHP の初心者であり、ここにいる何人かの素晴らしい人々が、PHP でフォームを検証するのを手伝ってくれました。また、JS と php の両方を使用してフォームを一緒に検証することは可能ですか? ユーザーがjsを無効にしている場合、クライアント側で検証プラグインとサーバーでphpを使用しています。よろしければ、問題がなければフォームをチェックしてください..ところで、phpがフォームをチェックするときにjsを無効にして問題を確認してください。 https://www.dropbox.com/s/vka7cy70xv4zryf/formtest.zip お時間をいただきありがとうございます。

<title>FormTest</title>
        <link rel="stylesheet" type="text/css" href="css.css"/>

        <style type="text/css">
            .formerrors li{color:yellow;
                font-size:14px;
                font-weight:lighter;
                font-family:Tahoma, Geneva, sans-serif;}


        </style>
    </head>
    <body>
<div id="contact">
    <h1 class="heading1"> Contact:</h1>
        <form name="contact" action="" method="post">

            <label for="YourName">Your Name:</label>
            <input type="text" name="name" class="required" />

            <label for="YourEmail">Your Email:</label>
            <input type="text" name="email" class="required"/>

            <label for="Subject">Subject:</label>
            <input type="text" name="subject" class="required"  />

            <label for="YourMessage">Your Message:</label>
            <textarea  name="message" class="required"></textarea>
            <p class="c3">10 + 5 =<input type="text" name="answerbox" id="answerbox" /></p>

        <fieldset>
            <input type="submit" name="submit" id="submit" value="Send" class="required"/>
            <input type="reset" id="reset" value="Reset"/>      
        </fieldset>
<?php
    if(isset($_POST['submit'])){
    $name = trim($_POST["name"]);
    $email = trim($_POST["email"]);
    $subject = trim($_POST["subject"]);
    $message = trim($_POST["message"]);
    $answerbox = trim($_POST["answerbox"]);
    if(empty($_POST['name'])){
        echo "<div class='formerrors'><li>Please type your name.</li></div>";
    } else {
        if (ctype_alpha($name) === false) {
        echo "<div class='formerrors'><li>Your name only contain letters!</li></div>";
        }
    }


    if(empty($_POST['email'])){
        echo "<div class='formerrors'><li>You've forgot to type your email address.</li></div>";
    } else{
        if(filter_var($email, FILTER_VALIDATE_EMAIL) === false){
            echo "<div class='formerrors'><li>Your email is not valid, please check.</li></div>";
        }
    }
    if(empty($_POST['subject'])){
        echo "<div class='formerrors'><li>Please type a subject.</li></div>";
    }
    if(empty($_POST['message'])){
        echo "<div class='formerrors'><li>You've forgot to type your message.</li></div>";
    }
    if(empty($_POST['answerbox'])){
        echo "<div class='formerrors'><li>Please answer the math question.</li></div>";
    }   else
    if($answerbox != 15){
            echo "<div class='formerrors'><li>Answer is not correct.</li></div>";
    }
    else{
        $headers =  'From: '.$email. "\r\n" .
        'Reply-To: '.$email . "\r\n" .
        'X-Mailer: PHP/' . phpversion();
        mail('me@mymail.me',$subject,$message,$headers);
        print "Your message was sent successfully";
    }
}


?>
    </form>
</div><!--contact-->

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script type="text/javascript" src="jquery-1.8.3.min.js"></script>
<script type="text/javascript" src="jquery.validate.min.js"></script>
<script type="text/javascript">
            $(document).ready(function() {
                jQuery.validator.addMethod("lettersonly", function(value, element) 
                            {return this.optional(element) || /^[a-z]+$/i.test(value);
                        }, "Letters only please.");

                      $("form").validate({

                        rules:{
                            name: {required: true,
                                maxlength:30,
                                lettersonly: true,},


                            email: {required: true,
                                email: true,
                                minlength: 5,
                                maxlength:40},              

                        answerbox: {required: true,
                                max: 15,
                                min: 15},
                        },

                      });
                    });

</script>


    </body>
</html>
4

2 に答える 2

0

サイトがリロードされると、フォームはクリアされます。

自分で記入する必要があります。

次のような入力フィールドがある場合:

<input type="text" name="test" id="test" />

あなたはこれを行うことができます:

<input type="text" name="test" id="test" value="<?= isset($_POST['test']) ? $_POST['test'] : '' ?>" />

すでに値が設定されている別の例:

<input type="text" name="test2" id="test2" value="Hello" />

になります:

<input type="text" name="test2" id="test2" value="<?= isset($_POST['test2']) ? $_POST['test2'] : 'Hello' ?>" />

これは、POST フィールドが設定されているかどうか (フォームが送信されたときに発生します) をチェックし、フォーム フィールドを設定します。それ以外の場合は、空またはデフォルト値です。

フォームが無効かどうかをさらに確認し、そうでない場合はフィールドに入力することで、これを拡張することもできます。

テキストエリアの例:

<textarea name="testtxt" id="testtxt"></textarea>

になります:

<textarea name="testtxt" id="testtxt"><?= isset($_POST['testtxt']) ? $_POST['testtxt'] : '' ?></textarea>
于 2013-08-29T11:09:47.350 に答える
0

名前: input type="text" name="name" value= php echo $name;

値を保持:--

value=?php echo $name;?

于 2015-08-20T10:30:35.123 に答える