2016-03-28 14 views
0

自分のサーバーにアップロードされた画像を削除するボタンを作成しようとしています。しかし、画像をアップロードしてから、何もしないで削除すると、ページから画像が削除されますが、サイトディレクトリをチェックするとまだ画像が残っています。さらに、DELETION COMPLETEにはエコーメッセージが表示されないので、DELETION FAILEDと表示されます。なぜこれがどういうわけか、イメージがレンダリングされているときに読み込みイメージgifだけを表示する方法もありますか?ここに私が持っているものがあります:画像削除ボタンが正しく機能していませんか?

<?php 
ob_clean();session_start(); 

    if (isset($_GET['logout'])){ 
     session_destroy(); 
    } 

    if (!isset($_SESSION['loggedin']) || $_SESSION['loggedin'] == false) { 
     header("Location: index.php"); 
    } 

    $loadingimage = false; 

    if(isset($_FILES['UploadFileField'])){ 
     $allowed = array('jpg','png','jpeg'); 
     $name = $_FILES["UploadFileField"]["name"]; 
     $tmp = $_FILES['UploadFileField']['tmp_name']; 
     $type = $_FILES['UploadFileField']['type']; 
     $newName = "Image Attachment.jpg"; 
     $types = array('jpg','png','jpeg'); 
     $ext = pathinfo($name, PATHINFO_EXTENSION); 

     if(in_array($ext,$types)){ 
      move_uploaded_file($tmp, "UPLOADS/$newName"); 
      echo '<font size="3"><p align="center"><b>UPLOAD SUCCESSFUL: </font><font color="#000000" size="3">Your document has now been uploaded and is ready to send.</b></p></font>'; 
      $loadingimage = true; 
     } 

     else { 
      if(!$tmp){ 
       echo '<font size="3"><p align="center"><b>UPLOAD FAILED: </font><font color="#000000" size="3">No document has been selected.</b></p></font>'; 
      } 

      else { 
       echo '<font size="3"><p align="center"><b>UPLOAD FAILED: </font><font color="#000000" size="3">Uploaded document was an incorrect extension type, please use ".jpg", ".jpeg", or "png" only.</b></p></font>'; 
      } 
     } 
    } 

    if (isset($_POST['submit'])){ 
     header('Location: Review.php'); 
    } 

    if (isset($_POST['delete'])){ 
     if ($loadingimage == true){ 
      echo '<font size="3"><p align="center"><b>DETLEION COMPLETE: </font><font color="#000000" size="3">Image no longer available</b></p></font>'; 
      unlink('UPLOADS/Image Attachment.jpg'); 
      $loadingimage = false; 
     } 

     else{ 
      echo '<font size="3"><p align="center"><b>DETLEION FAILED: </font><font color="#000000" size="3">No image available for deletion</b></p></font>'; 
     } 
    } 
?> 

<!DOCTYPE html> 
<html> 
    <head> 
     <meta charset="utf-8"> 
     <meta name="viewport" content="width=device-width, initial-scale=1"> 

     <title>Attach Image</title> 

     <link href="CSS/boilerplate.css" rel="stylesheet" type="text/css"> 
     <link href="CSS/master.css" rel="stylesheet" type="text/css"> 
     <script src="JAVASCRIPT/respond.min.js"></script> 
    </head> 
<body link="black"> 
    <div class="gridContainer clearfix"> 
     <div id="borderDiv"> 
      <div id="navDiv"> 
       <div id="backNavDiv"> 
        <a href="CompletedBy.php"><font color="white"><p align="left"><b>&nbsp;&lt;&nbsp;Completed By</b></p></font></a> 
       </div> 

       <div id="logoutDiv"> 
        <a href="index.php?logout"><font color="white"><p align="right"><b>Log Out&nbsp;&gt;&nbsp;</b></p></font></a> 
       </div>  
      </div> 

      <div id="headerDiv"> 
       <p>Attach Image</p> 
      </div> 

       <?php 
        if($loadingimage == false){ 
         echo '<div id="imageDiv"><img src="IMAGES/loading.gif"></div>'; 
        } 

        else{ 
         echo '<div id="imageDiv"><img src="UPLOADS/Image Attachment.jpg"></div>'; 
        } 
       ?>   

      <div id="loginBtnDiv"> 
       <div id="uploadAreaDiv"> 
        <form action="AttachImage.php" method="post" enctype="multipart/form-data" name="FileUploadForm" id="FileUploadForm"> 
        <label for="UploadFileField"></label> 
        <input type="file" name="UploadFileField" id="UploadFileField"/> 
        <input type="submit" name="UploadButton" id="UploadButton" value="Upload"/> 
        </form>  
       </div> 

       <form action="AttachImage.php" method="post" enctype="multipart/form-data" name="delete" id="delete"> 
        <input id="delete" name="delete" type="submit" value="Delete"> 
       </form> 

       <form action="AttachImage.php" method="post" enctype="multipart/form-data" name="FileForm" id="FileForm"> 
        <input id="submit" name="submit" type="submit" value="Next"> 
       </form> 
      </div>    
     </div> 
    </div> 
    <div id="logoDiv"> 
     <img src="IMAGES/Logo.png"> 
    </div> 
</body> 
</html> 
+0

'$ loadingimage = false;'を定義し、それが真か偽かをチェックします。それゆえ、それはいつも偽りです。 – Qirel

+0

ファイルがどこにあるかをスクリプトに指示するロジックが設定されていないため、削除できません。また、アップロードが同時に起こっている場合にのみ、削除部分に移動することも可能です。 – Rasclatt

答えて

1

私が前にコメントしたように、$loadingimage = false;を定義しているため、ファイルが同時にアップロードされている場合にのみファイルを削除できます。

ファイルのリンクを解除するために変数$loadingimageを使用するよりも、ファイルが存在するかどうかを確認する必要があります。

あなたはそれが存在する場合にのみ、ファイルを削除します

if (file_exists("UPLOADS/Image Attachment.jpg")) { 

これで

if ($loadingimage == true){ 

を変更し、警告の原因となるからunlinkを防ぐことができます。

+0

これは私の最後の答えのコメントに感謝します。 –

1

$loadingimage変数は常にfalseです。したがって、unlink()関数を実行することはありません。 if(isset($_FILES['UploadFileField'])){}trueに設定しているため、それが当てはまると思われる場合は、ページがリロードされ、$_POST['delete']がページに渡され、$loadingimage変数が再びfalseに設定されるため、表示されません。したがって、条件 if($loadingimage==true){}を削除すると、コードが機能するはずです。私は、あなたがこの状態をまったくしている理由は何も見ません。

+0

これでやったことがありますし、十分に機能しています。しかし、私はそれをエコーにしますか?削除失敗:いいえ削除可能な画像。 ? –

+0

@MattHutch Qirelは以下の質問に答えました。 :-) – DevMan

関連する問題