0

我有一个包含各种字段(姓名、电子邮件、密码等)的表格。它还有一组 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']?>"/>
4

2 回答 2

1

你说的是粘性表格。您可以通过多种方式实现粘性表单,我的选择是使用 session. 如果验证中出现错误,只需将 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]);
?>
于 2012-06-12T19:59:02.360 回答
0

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

于 2012-06-12T19:52:29.257 回答