Php 表单值不应清除
我有一张表格可以提交我的联系信息。 我使用php获取表单字段,如:Php 表单值不应清除,php,xhtml,Php,Xhtml,我有一张表格可以提交我的联系信息。 我使用php获取表单字段,如: if(isset($_post['submit'])) { //submit cantact info } else { //bad user } 我的问题是:如果用户未能提交表单,“表单值不应清除” 但是表单值在单击提交按钮时被清除。。!因此,有人知道如何防止清除表单值吗?您必须(手动)将提交的值放入表单元素中。例如: <input type="text" name="username" value="<?=(
if(isset($_post['submit']))
{
//submit cantact info
}
else
{
//bad user
}
我的问题是:如果用户未能提交表单,“表单值不应清除”
但是表单值在单击提交按钮时被清除。。!因此,有人知道如何防止清除表单值吗?您必须(手动)将提交的值放入表单元素中。例如:
<input type="text" name="username" value="<?=( isset( $_POST['username'] ) ? $_POST['username'] : '' )?>" />
您必须(手动)将提交的值放入表单元素中。例如:
<input type="text" name="username" value="<?=( isset( $_POST['username'] ) ? $_POST['username'] : '' )?>" />
您需要跟踪表单值。一个建议是设置一个默认值数组,用于显示表单标记
在POST上,然后合并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 -->
您需要跟踪表单值。一个建议是设置一个默认值数组,用于显示表单标记
在POST上,然后合并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 -->
您必须手动填充这些字段
总体思路是使用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';
?>
您必须手动填充这些字段
总体思路是使用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';
?>
value=$\u post['fieldname']
检查此项->澄清:您的意思是:用户提交表单,您验证输入日期。如果发生验证错误,您将再次向用户显示错误消息和表单,然后字段应包含输入的值?value=$\u post['fieldname']
检查此->澄清:您的意思是:用户提交表单,您验证输入日期。如果发生验证错误,请向用户再次显示错误消息和表单,然后字段应包含输入的值?是的。我只是存储post值并在字段中显示。我没有使用你的数组合并方法。而且也不使用htmlspecialchars()方法…没错。我只是存储post值并在字段中显示。我没有使用你的数组合并方法。同时也不要使用htmlspecialchars()方法……小心XSS漏洞true@Phil。但这条线太长,装不进盒子里;)小心XSS漏洞True@Phil。但这条线太长,装不进盒子里;)啊,你说得对。把它的定义放错地方。更正,谢谢你+1的全面回答。如果可能的话,我想再加一次,你说得对。把它的定义放错地方。更正,谢谢你+1的全面回答。如果可能的话,我会再次+1提及PRG