如何在php中验证服务器端验证后的复选框状态?

时间:2012-06-12 19:50:31

标签: php checkbox state validation

我有一个包含各种fiedls的表单(姓名,电子邮件,密码等)。它还有一组5个复选框。因为我必须更新数据库,我更喜欢做服务器端验证,我正在使用php。

如果发生验证错误,则错误将显示在页面顶部以及表单和文本字段中先前输入的数据。我无法保留复选框和单选按钮的状态。全部恢复为未被选中。我该怎么做才能保留复选框和单选按钮的状态?

表单看起来像......:

    Password:<input type="text" name="password" size="16" maxlength="9" value="<?php echo $_POST['password']?>"/>
    Retype Password:<input type="text" name="repassword" value="<?php echo $_POST['repassword']?>"/>
    Select:<br />
    <input type="checkbox" name="option1" value="on1" id="opt1"/> <label for="opt1">Option1</label><br />
    <input type="checkbox" name="option2" value="on2" id="opt2"/> <label for="opt2">Option2</label><br />
    <input type="checkbox" name="option3" value="on3" id="opt3"/> <label for="opt3">Option3</label><br />
    <input type="checkbox" name="option4" value="on4" id="opt4"/> <label for="opt4">Option4</label><br />
    <input type="checkbox" name="option5" value="on5" id="opt5"/> <label for="opt5">Option5</label><br />
    Mobile No:<input type="text" name="mobileno" maxlength="10" value="<?php echo $_POST['mobileno']?>"/>

2 个答案:

答案 0 :(得分:1)

你所说的是粘性表格。您可以通过多种方式实现粘性表单,我的选择是使用会话。如果验证中存在错误,只需将POST数据中的所有内容转储到会话中即可。在表单页面上,检查是否在会话中设置了值,并设置表单的默认值控制它是否为:

验证页面:

<?php
    session_start();
    if(/** some error condition **/) {
        foreach($_POST as $k => $v)
            $_SESSION['sticky_'.$k] = $v;

        header('Location: http://site.com/yourform.php');
        exit();
    }
?>

表单页面:

<?php session_start(); ?>

<input type = "checkbox" name = "option1" value = "on1" id = "opt1" <?php 
    if(isset($_SESSION['sticky_option1'])) 
        echo('checked = "checked"); 
?>/>

Example TextBox: <input type = "text" name = "textBoxName" <?php 
    if(isset($_SESSION['sticky_textBoxName']))
        echo('value = "' . $_SESSION['sticky_textBoxName'] . '"');
?>

...

<?php
    // Erase the POST values from session after the HTML is constructed.
    foreach($_SESSION as $k => $v)
        if( strpos($k, 'sticky_' !== false )
            unset($_SESSION[$k]);
?>

答案 1 :(得分:0)

checked属性添加到提交数据中值的任何复选框。