【发布时间】:2009-08-25 07:52:38
【问题描述】:
我有一个带有文本输入和文件输入的表单;正在验证文本字段。有没有办法让表单记住用户已经选择了哪些文件,如果他们点击提交但需要返回,因为其中一个文本字段没有验证?
【问题讨论】:
-
在调用PHP脚本之前文件上传已经完成。
标签: php
我有一个带有文本输入和文件输入的表单;正在验证文本字段。有没有办法让表单记住用户已经选择了哪些文件,如果他们点击提交但需要返回,因为其中一个文本字段没有验证?
【问题讨论】:
标签: php
出于安全原因,您不能“预填充”文件上传字段的内容。此外,这意味着每次提交表单时都会重新上传文件,这不是很好。
相反,这样做:
file_upload 的文件上传字段。file 的隐藏输入,其中包含刚刚上传的文件的名称。file_upload 字段中上传不同的文件,则处理上传并将新值存储在file 中。伪代码:
<?php
$file = null;
if (!empty($_POST['file'])) {
$file = $_POST['file'];
}
if (!empty($_FILES['file_upload'])) {
// process upload, save file somewhere
$file = $nameOfSavedFile;
}
// validate form
?>
<input type="file" name="file_upload" />
<input type="hidden" name="file" value="<?php echo $file; ?>" />
<?php
if (!empty($file)) {
echo "File: $file";
}
?>
此机制可以允许任何用户通过包含他们猜测存在于您的服务器上的file 名称来声明其他用户的文件为他们自己的文件。您需要确保上传的文件明确与特定用户相关联,以避免此问题。
【讨论】:
文件输入字段是只读的,您不能为它们设置初始值
【讨论】:
您仍然可以上传文件并显示文件名而不是文件选择框。要记住这些字段,您可以使用 $_SESSION 变量。
【讨论】: