Php 如何防止上载脚本在页面重新加载时再次移动文件?

Php 如何防止上载脚本在页面重新加载时再次移动文件?,php,Php,表格: 剧本: 此脚本还使用javascript进行多个图像上载 在web浏览器中单击“页面重新加载”时,在完成第一次上载后,脚本会为同一文件的名称指定一个新的ID代码,并再次将图像文件移动到“上载”文件夹中 如何防止脚本将为名称分配了新ID代码的图像文件再次移动到uploads文件夹中 任何建议都将不胜感激 编辑: 因此,我选择重定向到同一页面,在提交完成后,表单将被清除 看起来,这就是方法。在上载之前,您可以在其中显示上载表单,然后创建一个随机密钥并将其存储在服务器上的某个位置。使用序列号的

表格:

剧本:

此脚本还使用javascript进行多个图像上载

在web浏览器中单击“页面重新加载”时,在完成第一次上载后,脚本会为同一文件的名称指定一个新的ID代码,并再次将图像文件移动到“上载”文件夹中

如何防止脚本将为名称分配了新ID代码的图像文件再次移动到uploads文件夹中

任何建议都将不胜感激

编辑:

因此,我选择重定向到同一页面,在提交完成后,表单将被清除


看起来,这就是方法。

在上载之前,您可以在其中显示上载表单,然后创建一个随机密钥并将其存储在服务器上的某个位置。使用序列号的临时文件夹更安全 您可以将其作为隐藏值包含在上载表单中。 正在处理上载的脚本应该首先查找此密钥,如果它存在,您可以删除它并继续重命名/上载/执行任何您想执行的操作。 如果密钥不存在,您可以确定它是一个重复的请求,然后直接忽略它


别忘了每次都清理临时文件夹,比如说删除每一个超过一小时左右的密钥

如果我在上传表单上重新加载,我的浏览器会询问我是否要重新发送POST数据。如果我选择这样做,将再次发送所有POST数据,包括我上载的文件。所以不,您重新加载的请求不会再次移动同一个文件,而是只移动我上载的另一个副本。
<div id="maindiv">

            <div id="formdiv">
                <h2>Multiple Image Upload Form</h2>
                <form enctype="multipart/form-data" action="" method="post">
                    First Field is Compulsory. Only JPEG,PNG,JPG Type Image Uploaded. Image Size Should Be Less Than 100KB.
                    <hr/>
                    <div id="filediv"><input name="file[]" type="file" id="file"/></div><br/>

                    <input type="button" id="add_more" class="upload" value="Add More Files"/>
                    <input type="submit" value="Upload File" name="submit" id="upload" class="upload"/>
                </form>
                <br/>
                <br/>
                <!-------Including PHP Script here------>
                <?php include "upload.php"; ?>
            </div>

        </div>
<?php
if (isset($_POST['submit'])) {
    $j = 0; //Variable for indexing uploaded image

    $target_path = "uploads/"; //Declaring Path for uploaded images
    for ($i = 0; $i < count($_FILES['file']['name']); $i++) {//loop to get individual element from the array

        $validextensions = array("jpeg", "jpg", "png");  //Extensions which are allowed
        $ext = explode('.', basename($_FILES['file']['name'][$i]));//explode file name from dot(.)
        $file_extension = end($ext); //store extensions in the variable

        $target_path = $target_path . md5(uniqid()) . "." . $ext[count($ext) - 1];//set the target path with a new name of image
        $j = $j + 1;//increment the number of uploaded images according to the files in array

      if (($_FILES["file"]["size"][$i] < 100000) //Approx. 100kb files can be uploaded.
                && in_array($file_extension, $validextensions)) {
            if (move_uploaded_file($_FILES['file']['tmp_name'][$i], $target_path)) {//if file moved to uploads folder
                echo $j. ').<span id="noerror">Image uploaded successfully!.</span><br/><br/>';
            } else {//if file was not moved.
                echo $j. ').<span id="error">please try again!.</span><br/><br/>';
            }
        } else {//if file size and file type was incorrect.
            echo $j. ').<span id="error">***Invalid file Size or Type***</span><br/><br/>';
        }
    }
}
?>