login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Bestand verwijderen uit map

Offline smbe - 06/02/2007 14:10
Avatar van smbeNieuw lid Tot nu toe heb ik hetvolgende:

  1. <?
  2. $dir = "./uploads"; // de directory die hij uit moet lezen
  3. $exten = array('doc', 'xls', 'pps', 'ppt', 'rtf', 'txt', 'zip', 'pdf', 'jpg', 'jpeg', 'gif', 'png'); // de extensies die hij weer moet geven
  4. if ($handle = @opendir($dir))
  5.  
  6. {
  7. while (false !== ($file = @readdir($handle))) {
  8. $bestand = $dir ."/". $file ;
  9. $ext = pathinfo($bestand);
  10. if(in_array($ext['extension'], $exten))
  11. {
  12. echo " &bull; <a href='./uploads/". $file ."' target='_blank'>". basename($file, ".php") ."</a><br>" ;
  13. }
  14. }
  15. @closedir($handle);
  16. }
  17. ?>

Deze code leest de inhoud van een map uit. Wat ik nu wil hebben is dat in plaats van &bull; een plaatje wordt weergegeven (bijvoorbeeld met een kruis erin). Zodra ik dan op dat plaatje klik moet dat bestand wat erachter staat worden verwijderd uit de map uploads. Ik heb op meerdere site's gekeken naar een oplossing maar kan helaas niets vinden. Ik wil overigens liever geen database gebruiken. Is het dan alsnog mogelijk?

3 antwoorden

Gesponsorde links
Offline Grayen - 06/02/2007 14:49
Avatar van Grayen PHP ver gevorderde zoiets?

  1. <?
  2. $dir = './uploads'; // de directory die hij uit moet lezen
  3. $exten = array('doc', 'xls', 'pps', 'ppt', 'rtf', 'txt', 'zip', 'pdf', 'jpg', 'jpeg', 'gif', 'png'); // de extensies die hij weer moet geven
  4. if ($handle = @opendir($dir))
  5. {
  6. while (false !== ($file = @readdir($handle)))
  7. {
  8. $bestand = $dir .'/'. $file ;
  9. $ext = pathinfo($bestand);
  10. if(in_array($ext['extension'], $exten))
  11. {
  12. $bestanden[] = $file;
  13. }
  14. }
  15. @closedir($handle);
  16. }
  17. if(isset($_GET['img']))
  18. {
  19. $bestand = $dir.'/'.$_GET['img'];
  20. if(in_array($_GET['img'], $bestanden) && file_exists($bestand))
  21. {
  22. unlink($bestand);
  23. }
  24. }
  25. foreach($bestanden as $file)
  26. {
  27. echo ' <a href="?img='. $file .'" target="_blank">X</a> <a href="./uploads/'. $file .'" target="_blank">'. basename($file, '.php') .'</a><br>'
  28. }
  29. ?>

Offline Thomas - 06/02/2007 15:09
Avatar van Thomas Moderator Lol... eerst bouw je een lijst van bestanden, dan verwijder je mogelijk iets, en dan druk je de (wellicht verouderde) lijst af...

Misschien is het handiger als je de pagina ververst nadat je iets hebt verwijderd?

Daarnaast is het script niet beveiligd, dus iedereen die van het bestaan van het script / de pagina weet kan bestanden weggooien.
Offline smbe - 06/02/2007 15:19 (laatste wijziging 06/02/2007 15:39)
Avatar van smbe Nieuw lid Het ging er mij in eerste instantie erom dat het zo zou lukken. Over de beveiliging had ik nog niet echt nagedacht. Ook hierover zijn tips welkom.

Het werkt nu prima, bedankt daarvoor, maar wanneer ik het laatste bestand verwijder en vervolgens refresh krijg ik een foutmelding. Dit zou kunnen kloppen omdat de URL nog steeds "?img=test.doc" bevat. Hoe zorg ik ervoor dat na het verwijderen van een bestand hij zichzelf zo refreshed dat de pagina opnieuw wordt opgeroepen zonder "?img=test.doc". Ik hoop dat ik zo duidelijk ben.

De foutmelding (verwijst naar regel 25)
Warning: Invalid argument supplied for foreach() ...
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.19s