Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP错误,上传图像_Php - Fatal编程技术网

PHP错误,上传图像

PHP错误,上传图像,php,Php,所以在学校做作业。这个问题一直困扰着我,我不知道如何解决这个问题,也不知道去哪里寻找(他们也没有提供太多帮助) 问题是这样的 “editBanner.php”页面上有一个bug。删除图像时,该数字将被删除。当上传一个新文件时,它会比当前横幅的总数多出一个。这有一个主要问题,例如,如果我们有四个横幅:1.jpg、2.jpg、3.jpg和4.jpg。如果我们删除2.jpg,剩下的是1.jpg、3.jpg和4.jpg。如果我们随后上传了一个新的图像,页面将计算图像的数量(在本例中为三个)并添加1,给我

所以在学校做作业。这个问题一直困扰着我,我不知道如何解决这个问题,也不知道去哪里寻找(他们也没有提供太多帮助)

问题是这样的

“editBanner.php”页面上有一个bug。删除图像时,该数字将被删除。当上传一个新文件时,它会比当前横幅的总数多出一个。这有一个主要问题,例如,如果我们有四个横幅:1.jpg、2.jpg、3.jpg和4.jpg。如果我们删除2.jpg,剩下的是1.jpg、3.jpg和4.jpg。如果我们随后上传了一个新的图像,页面将计算图像的数量(在本例中为三个)并添加1,给我们一个新的文件名“4.jpg”。我们已经有一个名为4.jpg的文件,因此,旧的4.jpg将被替换。找到修复此错误的方法,以便永远不会替换图像

这是密码。任何帮助都会很棒。先谢谢你。如果你知道一个补丁,如果你能解释补丁以及它是如何工作的,那就太棒了

<?php 
require_once ("Includes/simplecms-config.php"); 
require_once  ("Includes/connectDB.php");
include("Includes/header.php");        

          confirm_is_admin();   

        $dir = 'Images/banner';
          $confirmation = "";

          if(isset($_GET["del"])){
            if (file_exists($dir . "/" . $_GET["del"])) {
                unlink($dir . "/" . $_GET["del"]);
                $confirmation = $_GET["del"] . " deleted. <br><br>";
            } else {
                $confirmation = $_GET["del"] . " doesn't exist. <br><br>";
          }
          }

          $files = scandir($dir);
          array_shift($files);
          array_shift($files);

          $newImage = COUNT($files)+1;

          if(isset($_GET["add"])) {
               $confirmation = "Image successfully uploaded.";
          }

          if(isset($_FILES["file"]["name"])){
            $allowedExts = array("gif", "jpeg", "jpg", "png");
            $temp = explode(".", $_FILES["file"]["name"]);
            $extension = end($temp);

            if ((($_FILES["file"]["type"] == "image/gif")
            || ($_FILES["file"]["type"] == "image/jpeg")
            || ($_FILES["file"]["type"] == "image/jpg")
            || ($_FILES["file"]["type"] == "image/pjpeg")
            || ($_FILES["file"]["type"] == "image/x-png")
            || ($_FILES["file"]["type"] == "image/png"))
            && ($_FILES["file"]["size"] < 50 * 1024 * 1024) //50mb (1024 * 1kb = 1mb, 50 x 1024kb = 50mb)
            && in_array($extension, $allowedExts)) {
              if ($_FILES["file"]["error"] > 0) {
                    echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
              } else {
                    echo "Upload: " . $_FILES["file"]["name"] . "<br>";
                    echo "Type: " . $_FILES["file"]["type"] . "<br>";
                    echo "Size: " . ($_FILES["file"]["size"] / 1024) . "kB<br>";
                    echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>";
                    move_uploaded_file($_FILES["file"]["tmp_name"], $dir ."/" . $newImage . "." . $extension);
                    echo "Stored in: " . $dir . "/" . $_FILES["file"]["name"];
                    header("Location: editBanner.php?add=1");
              }
            } else {
              echo "Invalid file";
              }
            }
?>

<div id="container">
        <div id="admin">
            <?php
                if(!empty($confirmation)) {
                    echo "<div id='confirmation'>" . $confirmation . "</div>";
                }

                for ($i = 0; $i < COUNT($files); $i++) {
                    echo '<div id="bannerImage">';
                    echo $files[$i] . ' - <a href="editBanner.php?del=' . $files[$i] . '">Delete</a><br>';
                    echo '<img src="' . $dir . '/' . $files[$i] . '"width="200px" height="100px" /><br>';
                    echo '</div>';
          $files[$i--];
                }
            ?>

      <style>
        #bannerAdd {
            float: right;
            margin-right: 700px;  
        } 
      </style>

      <div id="bannerAdd" >
      <form action="editBanner.php" method="post"     
          enctype="multipart/form-data" >
      <h3>Upload a New Banner Image</h3>
        <input type="file" name="file" id="file"><br>
      <input type="submit" name="submit" value="Submit">
      </form>
    </div>
  </div>
</div>

</div> <!-- End of outer-wrapper which opens in header.php -->
<?php 
  include ("Includes/footer.php");
?>

#横幅{
浮动:对;
右边距:700px;
} 
上载新的横幅图像


如何根据日期和时间创建名称

$temp = explode(".", $_FILES["file"]["name"]);
$newImage = round(microtime(true)) . '.' . end($temp);

这样,您的文件名就不会有问题,而且它也将是唯一的名称。

这不是粗鲁的意思,但这些是您的家庭作业吗?是的,这是我学习php的第一次。这是一场噩梦。
$newImage=COUNT($files)+1-这是构造新文件名的行。有人指出,在特定情况下,它会造成一个重大问题。将其更改为至少在您拥有的图像名称列表中唯一的名称。