-1

フォームを使用してユーザーを自分のWebサイトに登録していますが、キャプチャセキュリティが設定されています。すべてがうまく機能していますが、私が直面している唯一の問題は、間違ったキャプチャを入力したり、何らかの理由でページが更新されたりすると、ユーザーが入力したすべてのデータが消去されることです。

テキストフィールドがリセットされないようにする方法を知っていますが、チェックボックス、ラジオグループ、およびテキストエリアに対して同じことを行う方法を知る必要があります。

私が達成したいのは、入力されたキャプチャが間違っていてフォームが送信された場合でも、ユーザーがフォームを再入力する時間を節約するなど、キャプチャフィールドを除いてユーザーが入力したチェックボックス、ラジオグループ、テキストエリアがフォームに含まれている必要があることです。

これはどのように行うことができますか?私のフォームはhtmlで、処理ページはphpです。

4

2 に答える 2

3

このようなものが機能するはずです。

<input type="checkbox" name="agree" value="yes" <?php echo ($_POST['agree']=='yes' ? 'checked="checked"' : '');?> />
于 2012-05-02T16:54:28.557 に答える
0

いくつかの入力の例として、スクリプトの上部にあるモニターは、他の入力の手がかりを提供する必要があります。

<?php
/*monitor the POST request, delete in production*/
echo "<pre>";
print_r($_POST);
echo "</pre>";

if($_SERVER['REQUEST_METHOD'] === 'POST')
{
    //check things like captcha / empty fields first, 
    //if something fails: fill variables
    $postedText     = isset($_POST['textInput']) ? $_POST['textInput'] : null;
    $postedCheckbox = isset($_POST['checkboxInput']) ? 1 : 0;
    $postedRadio    = isset($_POST['radioInput']) ? $_POST['radioInput'] : null;
    $postedSelect   = $_POST['selectInput'];
    $postedTextarea = isset($_POST['textareaInput']) ? $_POST['textareaInput'] : null;
}
?>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>
    </head>
    <body>
        <form method="post">
            <label for="textInput">Name:</label>
            <input type="text" 
                   id="textInput" 
                   name="textInput" 
                   value="<?php echo (isset($postedText) ? $postedText : 'text') ;?>"
                   />
            <br />
            <label for="checkboxInput">Checkbox:</label>
            <input type="checkbox" 
                   id="checkboxInput" 
                   name="checkboxInput" 
                   <?php echo (isset($postedCheckbox) && $postedCheckbox === 1 ? "checked='checked'" : '') ;?>
                   />
            <br />
            <label for="rbInput">Radio:</label>
            <input type="radio" 
                   id="rbInputMale" 
                   name="rbInput" 
                   value="male"
                   <?php echo (isset($postedRadio) && $postedRadio === 'male' ? "checked='checked'" : '') ;?>
                   /> male
            <input type="radio" 
                   id="rbInputFemale" 
                   name="rbInput" 
                   value="female"
                   <?php echo (isset($postedRadio) && $postedRadio === 'female' ? "checked='checked'" : '') ;?>
                   /> female
            <br />
            <label for="selectInput">Select</label>
            <select name="selectInput"
                    id="selectInput">
                <?php
                $options    = array(
                    'one'   => 'one',
                    'two'   => 'two',
                    'three' => 'three'
                );
                foreach ($options as $key => $value)
                {
                    ?>
                <option value="<?php echo $value;?>"
                        <?php 
                        if(isset($postedSelect))
                        {
                            echo ($value === $postedSelect ? "selected='selected'" : '');
                        }
                            ?>
                        >
                            <?php echo $key;?>
                </option>
                <?php
                }
                ?>
            </select>
            <br />
            <label for="textareaInput">textarea</label>
            <textarea name="textareaInput" id="textareaInput"><?php echo (isset($postedTextarea) ? $postedTextarea : '');?></textarea>
            <br />
            <input type="submit" value="submit" />
        </form>
    </body>
</html>
于 2012-05-02T18:37:48.270 に答える