【问题标题】:file validation, preserving the file location文件验证,保留文件位置
【发布时间】:2014-11-11 21:59:29
【问题描述】:

我正在尝试为输入(sql 插入)表单创建一个完整的验证页面。

我通常会做以下事情来保留页面上已经输入的值,以防一次验证失败(在这种情况下,用户返回到表单以更正它并显示错误)。

 echo 'value=" ';
 if(isset($_POST['NewGameName'])){ 
     echo $_POST['NewGameName']; 
 } // for text-fields
 echo '<option value="'.$i.'" ';

 if(isset($_POST['Score'])){ 
     if($i == $_POST['Score']){
         echo'selected="selected"';
     }
 }

 echo '>'.$i.'</option>'; // for dropdowns

但是如果页面被刷新,我似乎无法找到保留文件位置的方法。有没有办法做到这一点?我读过它总是出于安全原因被清除,这会很烦人,但如果这是标准,我想人们已经习惯了。

【问题讨论】:

  • 将正确的文件存储在临时保存区域,并在表单上显示有关它们的详细信息。即用户只需要重新输入那些失败的。
  • 所以如果我使用它作为文件位置 move_uploaded_file($_FILES['BackgroundUpload']['tmp_name'], 'Pictures/'.mysqli_escape_string($dbc, trim($Title)) .'/BackgroundTMP.'.$backgroundEXT['extension']);如果已设置,我将如何将其应用于输入以保留位置?
  • 您不必再次保存和显示输入位置,因为文件已经在服务器上。您只需向他们询问失败的文件即可。
  • 是的,但我不想在失败时从输入中删除内容,以便只显示失败的元素,因此,我需要让文件被覆盖第二次上传失败时需要,或者,将文件指向第一次成功上传图像的文件夹。我在问我该怎么做后者。
  • 只需在表单上显示有效文件的详细信息,以便用户知道它们是什么。即用上传文件的详细信息替换“文件输入”字段。如果他们想更改服务器上的文件,请为文件提供“删除”按钮/复选框。

标签: php file-upload image-uploading preserve


【解决方案1】:

您可以创建一个隐藏字段来存储文件名,并通过在实际文件字段上使用 onchange 事件通过 javascript 更改名称。 一旦文件名更改,您就可以更新隐藏字段值。 您在 post 变量中获取隐藏字段值并使用此变量刷新文件字段的值

【讨论】:

  • 这不仅仅是我想要的文件名,而是位置。所以我不只是想要 image.png,我想要 user/documents/pictures/images/image.png 所以用户不必再次找到图像(虽然我知道这只是单击链接并选择的问题正确的图像,因为选择的文件按钮应该以某种方式记住图像所在的位置)。如果每次其他地方出现不相关的错误时不需要再次选择图像,它只会减少错误。
【解决方案2】:

我认为你有两个选择。

  1. 是使用Ajax进行验证。这样您就不会留下带有文件路径的表单。

  2. 在验证后使用 javascript 返回历史记录 history.go(-1) 到上一个屏幕。我认为在使用历史记录时,表单条目会被保留。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-24
    • 2013-07-23
    • 2020-06-02
    • 2011-03-07
    • 2022-08-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多