如何在 php 中避免服务器验证后数据丢失


How to avoid data loss after server validation in php?

在我的创建页面中,我正在使用一个或多个文件上传文本框,选择框,表单内的文本框,填写完所有表单数据并提交后,我将进行服务器验证然后插入数据库...在插入数据库之前,如果服务器校验失败,填充的数据就会丢失,有没有简单的方法来防止数据丢失?

对于选择和文本框,我们可以传递 $_POST 的值

但是对于文件上传文本框,如何防止数据丢失?我们可以存储在会话中吗?

提前谢谢..

您可以使用一些变量来存储数据,然后您可以执行验证

好吧,我举了一个PHP验证的例子

<?php
  if(isset($_POST['submit'])){
    $name = $_POST['name'];  //
    // and some other data input
    and goes the validation part
?>
<form ... >
<input type="text" name="name" value="<?php if(isset($name)) echo $name; ?>"
</form>
嗯..

这必须有效..您可能会找到其他更好的方法。但这也会起作用

据我所知,您无法像其他表单元素一样维护文件上传值。

如果仍要保留 $_FILES 值。您可以在会话中接受它们。

$_SESSION['imagename'] = $_FILES['image']['name'];
$_SESSION['imagetmp']  = $_FILES['image']['tmp_name'];

您可以将数据保存在变量中并在以后填充,但 type="file" 输入字段除外。 如果文件可以预填充(或说未经用户许可而选择)并且浏览器不允许,这将是一个安全问题。

一种选择是将文件保存在服务器中的任何临时文件夹中,如果验证工作正常,请将其移动到上传目录。

另一种选择是分步(以页面为单位)显示表单,在最后一步显示文件上传选项,以便用户在所有验证后到达文件上传部分,您可以在最后一步中进行文件上传验证。