我有一个表单来提交我的联系信息。 我正在使用php获取表单字段,如:
if(isset($_post['submit']))
{
//submit cantact info
}
else
{
//bad user
}
我的问题是:如果用户提交表单失败,“表单值不应该清除”....
但是单击提交按钮时表单值正在清除..!所以任何人都知道如何防止明确的表格价值?
答案 0 :(得分:1)
您必须手动填充这些字段。
总体思路代表使用POST / Redirect / GET方法
收到POST数据后,您必须检查并提出错误标志
如果出现一些错误,您必须显示相同的表单,填充输入和相应的错误消息。
这是一个粗略的例子:
<?
$err = array();
if ($_SERVER['REQUEST_METHOD']=='POST') {
//performing all validations and raising corresponding errors
if (empty($_POST['name']) $err[] = "Username field is required";
if (empty($_POST['text']) $err[] = "Comments field is required";
if (!$err) {
// if no errors - saving data
// and then redirect:
header("Location: ".$_SERVER['PHP_SELF']);
exit;
} else {
// all field values should be escaped according to HTML standard
foreach ($_POST as $key => $val) {
$form[$key] = htmlspecialchars($val);
}
} else {
$form['name'] = $form['comments'] = '';
}
include 'form.tpl.php';
?>
然后在form.tpl.php模板中使它像这样:
<? if ($err): ?>
<? foreach($err as $e): ?>
<div class="err"><?=$e?></div>
<? endforeach ?>
<? endif ?>
<form>
<input type="text" name="name" value="<?=$form['name']?>">
<textarea name="comments"><?=$form['comments']?></textarea>
<input type="submit">
</form>
答案 1 :(得分:0)
您必须(手动)将提交的值放在表单元素中。例如:
<input type="text" name="username" value="<?=( isset( $_POST['username'] ) ? $_POST['username'] : '' )?>" />
答案 2 :(得分:0)
您需要跟踪表单值。一个建议是设置一个在呈现表单标记时使用的默认值数组。
在POST上,然后合并帖子数据。例如
$formData = array(
'foo' => '',
'bar' => 'default value',
'baz' => ''
);
if ('POST' == $_SERVER['REQUEST_METHOD') {
$formData = array_merge($formData, $_POST);
// do validation, handle success
}
然后,在HTML中
<input name="foo" value="<?php echo htmlspecialchars($formData['foo']) ?>">
<!-- etc -->