-1

我正在使用一种表格在我的网站上注册用户,并且上面有验证码安全性。一切都运行良好,但我面临的唯一问题是,如果我输入了错误的验证码或以某种方式刷新页面,用户输入的所有数据都会被清除。

我现在知道如何防止文本字段被重置,但我仍然需要知道如何为复选框、radiogroups 和 textarea 做同样的事情。

我希望实现的是,即使输入的验证码错误并且提交了表单,表单也应该具有复选框、radiogroups 和 textarea 作为用户填写的内容,不包括验证码字段,以节省用户重新填写表单的时间.

如何才能做到这一点?我的表单是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 回答