foto verwijderen

Status
Niet open voor verdere reacties.

assassinscreed3

Gebruiker
Lid geworden
30 okt 2012
Berichten
68
beste,

ik heb een upload systeem op me website, het uploade gaat prima.
nu wil ik dat je ook foto's kan verwijderen.

ik heb dit script ervoor:

PHP:
<? 
$getfile = $_GET['verwijder'];
$delbestand = 'uploads/$getfile';
unlink('$delbestand');

?>

maar dan krijg ik de error :
HTML:
Warning: unlink($delbestand) [function.unlink]: No such file or directory in /home/*******/public_html/upload/verwijder.php on line 4

iemand een idee wat ik fout doe?

mvg ac3
 
Het bestand / de map kan niet gevonden worden. Dus je hebt het verkeerde pad gebruikt. Het beste wat je altijd kan doen is het zogenaamde 'full path' gebruiken (Voor Windows b.v.: C:\bla.txt).

Zo te zien wordt op de server waarop jouw website staat gehost Linux gebruikt, het volledige pad zou er dan ongeveer zo uitzien:

/home/gebruikersnaam/public_html/file-om-te-verwijderen.extensie

Tip: Het script zoals hij nu is, is een enorm security risico. Ik kan namelijk elk bestand verwijderen wat ik wil.

b.v.: verwijder.php?verwijder=index.php

Succes.
 
In tegenstelling tot hanna ben ik van mening dat je beter een relative path kunt gebruiken. Dit omdat het meer beter compatible is met linux en windows omgevingen.
Daarnaast zou ik je aanraden om bij je upload formulier te filteren op extensies. Als iemand afbeeldingen moet uploaden beperk je dan tot .jpeg, .jpg, .gif, .png en dergelijke en niet op .txt en bijvoorbeeld .php.

Dit kun je in je upload formulier als volgt doen:

Code:
$file = $_FILES['image']['name'];
$allowed_extensions('jpeg', 'jpg', 'gif', 'png');
$ext = pathinfo($file , PATHINFO_EXTENSION);
if(!in_array($ext, $allowed_extensions)){
// Error handling 
}
else{
// proceed file upload
}

Dan zou ik ook alle uploads in een bepaalde map stoppen. Dus bijvoorbeeld "uploads"

Als je dan de volgende structuur hebt:

- root
- uploads
- foto.png
verwijder.php

Kun je in verwijder.php het volgende doen:

Code:
$uploads = "uploads/";  // het path van de uploads
$file_to_delete = "foto.png";

// controleer of het bestand uberhaubt bestaat
if(file_exists($uploads . $file_to_delete)){
// code to delete file
unlink($uploads . $file_to_delete);
}
Als je verwijder.php in een submap zou staan. Bijv "actions" krijg je het als volgt:

- root
- uploads
- foto.png
- actions
- verwijder.php

Het relatieve path naar uploads is dan 1 map hoger dus komt er .. voor de map te staan:

Code:
$uploads = "../uploads/";  // het path van de uploads
$file_to_delete = "foto.png";

// controleer of het bestand uberhaubt bestaat
if(file_exists($uploads . $file_to_delete)){
// code to delete file
unlink($uploads . $file_to_delete);
}
Bovenstaande code heb ik niet getest maar dit is een mogelijke manier van implementeren.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan