标签:php
我有一个带有文本输入和文件输入的表单;正在验证文本字段.有没有办法让表单记住用户已经选择了哪些文件,如果他们点击提交但需要返回,因为其中一个文本字段未验证?
解决方法:
出于安全原因,您无法“预填充”文件上载字段的内容.此外,这意味着每次提交表单时都会重新上传文件,这不会很好.
相反,这样做:
>创建名为file_upload的文件上载字段.
>在服务器端,无论如何都要处理上传,即使表单验证的其余部分失败也是如此.
>如果表单验证失败,但文件已上载,请在表单中插入一个隐藏的输入,其中包含名称文件,其中包含刚刚上载的文件的名称.
>显示文件正常的用户可见指示.如果是图像,则显示其缩略图版本.如果是任何其他文件,请显示其文件名和/或图标.
>如果用户选择在file_upload字段中上载其他文件,请处理上载并将新值存储在文件中.
伪代码:
$file = null;
if (!empty($_POST['file'])) {
$file = $_POST['file'];
}
if (!empty($_FILES['file_upload'])) {
// process upload, save file somewhere
$file = $nameOfSavedFile;
}
// validate form
?>
if (!empty($file)) {
echo "File: $file";
}
?>
重要的提示
此机制允许任何用户通过在服务器上包含他们猜到的文件名来声明其他用户的文件.您需要确保上传的文件与特定用户明确关联,以避免此问题.
标签:php
来源: https://codeday.me/bug/20190925/1816353.html