如果提交不成功,如何防止html复选框,radiogroups和textarea重置

时间:2012-05-02 16:11:33

标签: php html checkbox radio-button reset

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

我现在知道如何防止文本字段重置,但我仍然需要知道如何对复选框,radiogroups和textarea执行相同操作。

我希望实现的是,即使输入的验证码错误并且表单已提交,表单也应该有用户填写的复选框,radiogroups和textarea,不包括验证码字段,以便节省用户的时间填写表格。

如何做到这一点?我的表单是html,处理页面是php

2 个答案:

答案 0 :(得分:3)

这样的事情应该有效。

<input type="checkbox" name="agree" value="yes" <?php echo ($_POST['agree']=='yes' ? 'checked="checked"' : '');?> />

答案 1 :(得分: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>