我有一个包含各种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']?>"/>
答案 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
属性添加到提交数据中值的任何复选框。