2013-06-19 4 views
1

이 양식을 사용하여 서버에 파일을 업로드하고 database sql에 레코드를 만듭니다.unlink()를 사용하여 서버 파일 삭제

서버에서 이미지를 삭제하는 방법은 무엇입니까?

나는 다른 파일 eliminaimg.php (translimation : deleteimg.php)에서 "unlink"방법을 시도했지만 작동하지 않습니다 !!! 도와주세요 !!!

<?php 
    @include 'config.php'; 

    if(isset($_POST['Submit'])){ 
     // faccio un po' di inclusioni... 
     @require 'function.php'; 
     // Creo una array con i formati accettati 
     $tipi_consentiti = array("image/gif","image/jpeg","image/png"); 

     // verifico che il formato del file sia tra quelli accettati 
     if (@in_array($_FILES['imagefile']['type'], $tipi_consentiti)){ 
     // copio il file nella cartella delle immagini 
     @copy ($_FILES['imagefile']['tmp_name'], $path_img . $_FILES['imagefile']['name']); 

     // recupero i dati dal form 
     $titolo = @addslashes($_POST['titolo']); 
     $categoria = @addslashes($_POST['categoria']); 
     $nome = @addslashes($_FILES['imagefile']['name']); 
     $path = $path_img . stripslashes($nome); 
     $tipo = @addslashes($_FILES['imagefile']['type']); 


     // creo la miniatura 
     @makeThumb($path_img,$path,$nome,$tipo); 

     // aggiorno il database 
     $query = "INSERT INTO images (Titolo,Categoria,Nome,Tipo) VALUES('$titolo','$categoria','$nome','$tipo')"; 
     $res = @mysql_query($query) or die (mysql_error()); 


     // Stampo a video un po' di informazioni 
     echo "Nome: ".$_FILES['imagefile']['name']."<br />"; 
     echo "Dimensione: ".$_FILES['imagefile']['size']."<br />"; 
     echo "Tipo: ".$_FILES['imagefile']['type']."<br />"; 
     echo "Copia eseguita con successo."; 
     }else{ 
     // stampo un messaggio di errore nel caso in cui il file sia di un formato non consentito 
     echo "Impossibile eseguire l'upload."; 
     } 
    } 

    echo "</form>"; 
    echo "<div id='panelright' class='panelright'>"; 
    echo "<button id='buttonallimg'>Tutti</button>"; 
    echo "<button id='buttoncollimg'>Collane</button>"; 
    echo "<button id='buttonanelimg'>Anelli</button>"; 
    echo "<button id='buttonorecimg'>Orecchini</button></div>"; 
    echo "<div id='all' class='viewgallery'>"; 
    echo "<table width='100px' border='1'>"; 

    $query = "SELECT * FROM images"; 
    $res = mysql_query($query) or die (mysql_error()); 
    $column = 1; 
     while ([email protected]_fetch_array($res)){ 
     if ($column == 1) { 
      echo "<tr>"; 
     } 


     $nome = stripslashes($dati['Nome']); 

     echo "<td><a href='eliminaimg.php?Id=$dati[Id]?confirm=true' class='confirm'> <img src='images/delete.png'></a>"; 
     echo "<a href=\"" . $path_img . $nome . "\"rel=\"gallery[gallery1]\"><img src=\"" . $path_img . "tb_" . $nome . "\" \"></a></td>"; 

    if ($column == 5) { 
      echo "</tr>"; 
      $column = 1; 
     } else { 
      $column++; 
     } 
    } 
    if ($column != 1) { 
     echo "</tr>"; 
    } 
    echo "</table></div>"; 

eliminaimg.php는

<?php 

function delete(){ 
@include 'config.php'; 


$comando = "DELETE from images " . 
"where Id = '$_REQUEST[Id]'"; 


if(!mysql_query($comando)) 
echo "Modifica fallita <br/>"; 



chmod($path_img,0777); 

$nome = $_REQUEST['imagefile']['name']; 
$path = $path_img . $nome; 


unlink ($path); 


mysql_close($cn); 
} 
?> 
+0

'$ comando = "ID ='$ _REQUEST [ID]가 '여기서 화상으로부터 삭제",'이어야 $ comando = "이미지가 어디에서 삭제 식'{$ _REQUEST [ '이드' ]} ''; ' –

+1

yourdomain.com/someimage.png처럼 전체 URI를 사용하고 있지 않습니까? –

+1

$ path_img는 removaimg.php에서 어디서 왔습니까? – Polygnome

답변

1

당신은 데이터베이스,하지 $_REQUEST에서 파일 이름을 얻을 필요가있다.

function delete(){ 
@include 'config.php'; 

$comando = "SELECT Nome FROM images WHERE Id = '$_REQUEST[Id]'"; 
if ($result = mysql_query($comando) and $row = mysql_fetch_assoc($result)) { 
    $nome = $row['Nome']; 
} else { 
    die("Query failed: " . mysql_error()); 
} 

$comando = "DELETE from images " . 
"where Id = '$_REQUEST[Id]'"; 


if(!mysql_query($comando)) 
echo "Modifica fallita <br/>"; 



chmod($path_img,0777); 

$path = $path_img . $nome; 


unlink ($path); 


mysql_close($cn); 
} 
+0

경고 : mysql_fetch_assoc() : 제공된 인수가 유효한 MySQL 결과가 아닙니다. –

+0

'&& '를'and'로 변경했습니다.이를 해결해야합니다. – Barmar

+0

당신은 최고입니다 !!! 단순히 및 \t 잘 기능 솔루션입니다. 감사! –

0

당신이 잘못된 파일 경로를주고있다 할 수 있습니다. 이 시도.

function del_directory_record($filename) { 
    return unlink($_SERVER['DOCUMENT_ROOT'] . "/foldername/$filename"); 

}

+0

업로드 스크립트에서 파일을 생성 할 때'DOCUMENT_ROOT'을 필요로하지 않는다면 왜 그가 삭제 스크립트에서 필요합니까? – Barmar

0

파일의 전제가 정말로 777인지 확인하십시오. 파일 소유자도 확인하십시오. PHP는 그 파일을 소유하고 있을지도 모른다. 그 파일을 chown해야 할 수도 있습니다.

SureVerify - Email Verification