Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 表单值不应清除_Php_Xhtml - Fatal编程技术网

Php 表单值不应清除

Php 表单值不应清除,php,xhtml,Php,Xhtml,我有一张表格可以提交我的联系信息。 我使用php获取表单字段,如: if(isset($_post['submit'])) { //submit cantact info } else { //bad user } 我的问题是:如果用户未能提交表单,“表单值不应清除” 但是表单值在单击提交按钮时被清除。。!因此,有人知道如何防止清除表单值吗?您必须(手动)将提交的值放入表单元素中。例如: <input type="text" name="username" value="<?=(

我有一张表格可以提交我的联系信息。 我使用php获取表单字段,如:

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