Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.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 - Fatal编程技术网

Php 如果提交失败,如何保存值

Php 如果提交失败,如何保存值,php,Php,我有一个表单正在使用PHP服务器端脚本进行验证。形体的动作也与自身有关。为了显示多个错误,我将其存储在一个数组中,并使用foreach循环遍历这些值,并对dislay进行回显。我以为我已经完成了PHP验证,但我注意到每次我提交表单时,即使表单仍然包含一些错误,输入的所有值都会重置。为什么?当我使用javascript时,值保持不变,那么PHP又如何呢 这就是我设置错误并将数据插入数据库的方式。 if(isset($_POST["submit"])) { $lname = $_POST["lnam

我有一个表单正在使用PHP服务器端脚本进行验证。形体的动作也与自身有关。为了显示多个错误,我将其存储在一个数组中,并使用foreach循环遍历这些值,并对dislay进行回显。我以为我已经完成了PHP验证,但我注意到每次我提交表单时,即使表单仍然包含一些错误,输入的所有值都会重置。为什么?当我使用javascript时,值保持不变,那么PHP又如何呢

这就是我设置错误并将数据插入数据库的方式。
if(isset($_POST["submit"]))
{
$lname = $_POST["lname"];

$errors = array();

if(strlen($lname) == 0)
{
$errors[] = "Last name is required";
}

if (!empty(errors))
{
//display errors using foreach loop
}
else
{
//connect and insert data to mysql db
}

}
?>

在表单的输入元素代码中,如下所示使用它

<input type="text" name="username" value="<?php if(isset($_POST['username']) echo $_POST['username'];?>">

您可能在编写HTML表单时没有设置默认值

<input type="text" name="firstname" />

如果出现错误,应设置默认值。这里有一个例子。在输出之前,不要忘了清洁您的POST VAR

<input type="text" name="firstname" value="<?php echo $_POST['firstname']; ?>" />

您忘记了通过
htmlspecialchars()
传递值。是的,这取决于开发人员。这是一个筛选器,并且是一个好的做法,在每次选择之前通过此筛选器传递值。您忘记了通过
htmlspecialchars()
传递值。可以有多个筛选器应用于输出。但是谢谢,我已经添加了一个通知,OP不应该直接将表单值溢出到HTML中。但我相信,梅知道她做什么!有人告诉我,将数据发送到自身是不合适的,因为如果数据刷新,它将再次发送数据。正确的方法是将数据发送到数据处理程序(另一个页面),然后使用会话。这是某人对我问题的回答。这就是他推荐的代码@Mei,简单地说,如果发布的数据中有错误,在页面刷新时重新发送它们是安全的,因为它只会生成另一个错误(这是安全的,不是吗?)。在成功的情况下,重新发送数据是一个问题,因为这将生成另一个成功的POST,并可能在DB中添加两个相同的行(例如,创建两个注释而不是仅一个,或者生成两个采购订单而不是仅一个)。有关详细信息,请参阅。@Mei,至于将数据发送到数据处理程序,它可能是同一页(URI),只要它可以将数据编辑请求与数据检索请求分开并相应地执行操作即可。