login  Naam:   Wachtwoord: 
Registreer je!
 Forum

[PHP] Map verwijderen.

Offline mike87 - 22/02/2006 21:59
Avatar van mike87Nieuw lid Ik gebruikde onderstaande functie die ik op internet vond om een map te verwijderen:
  1. <?php
  2. function delDir($dirName) {
  3. if(empty($dirName)) {
  4. return true;
  5. }
  6. if(file_exists($dirName)) {
  7. $dir = dir($dirName);
  8. while($file = $dir->read()) {
  9. if($file != '.' && $file != '..') {
  10. if(is_dir($dirName.'/'.$file)) {
  11. delDir($dirName.'/'.$file);
  12. } else {
  13. @unlink($dirName.'/'.$file) or die('File '.$dirName.'/'.$file.' couldn\'t be deleted!');
  14. }
  15. }
  16. }
  17. $dir->close();
  18. @rmdir($dirName) or die('Folder '.$dirName.' couldn\'t be deleted!');
  19. } else {
  20. return false;
  21. }
  22. return true;
  23. }
  24. ?>


Ik pas de functie op de volgende manier toe:

  1. <?php
  2. $Album = mysql_query("SELECT id, Naam FROM Foto_Album WHERE Catogorie='".$_GET['CatId']."'");
  3.  
  4. while ( $Get = mysql_fetch_assoc($Album)) {
  5.  
  6. $Locatie = Config('Url').'/Albums/'.$_GET['CatId'].'_'.$Get['Naam'];
  7.  
  8. delDir($Locatie);
  9. }
  10. ?>


Maar nu wordt er niets verwijjderd.
Ik heb $Locatie al eens in een echo geplaats om te zien wat eruit kwam. En daar kwam de url naar de mappen uit.
Bijv: http://localhost/Fotoalbum/Albums/01_voetbal

Ik heb al geprobeerd aan het einde van de url een / te plaatsen, maar dit hielp niets.

Weet iemand waardoor er niets wordt verwijderd?

(Ik krijg geen errors te zien tijdens het testen van het script)

8 antwoorden

Gesponsorde links
Offline Wim - 22/02/2006 22:08
Avatar van Wim Crew algemeen shell_exec('rm -rf '.$Locatie);

probeer dat eens 
Offline mike87 - 22/02/2006 22:16
Avatar van mike87 Nieuw lid Ook niet 
Offline Ontani - 22/02/2006 23:03
Avatar van Ontani Gouden medailleGouden medailleGouden medailleGouden medaille

-1
  1. <?PHP
  2.  
  3. // loc1 is the path on the computer to the base directory that may be moved
  4. define('loc1', 'C:/Program Files/Apache Group/Apache/htdocs', true);
  5.  
  6. // use this format:
  7. $dir = '[reletive path]';
  8. if(remdir($dir))
  9. rmdir($dir);
  10. else
  11. echo 'There was an error.';
  12.  
  13. // this function deletes all files and sub directories directories in a directory
  14. // bool remdir( str 'directory path' )
  15. function remdir($dir){
  16.  
  17. if(!isset($GLOBALS['remerror']))
  18. $GLOBALS['remerror'] = false;
  19.  
  20. if($handle = opendir(loc1 . $dir)){ // if the folder exploration is sucsessful, continue
  21. while (false !== ($file = readdir($handle))){ // as long as storing the next file to $file is successful, continue
  22. $path = $dir . '/' . $file;
  23. if(is_file(loc1 . $path)){
  24. if(!unlink(loc1 . $path)){
  25. echo '<u><font color="red">"' . $path . '" could not be deleted. This may be due to a permissions problem.</u><br>Directory cannot be deleted until all files are deleted.</font><br>';
  26. $GLOBALS['remerror'] = true;
  27. return false;
  28. }
  29. } else
  30. if(is_dir(loc1 . $path) && substr($file, 0, 1) != '.'){
  31. remdir($path);
  32. @rmdir(loc1 . $path);
  33. }
  34. }
  35. closedir($handle); // close the folder exploration
  36. }
  37.  
  38. if(!$GLOBALS['remerror']) // if no errors occured, delete the now empty directory.
  39. if(!rmdir(loc1 . $dir)){
  40. echo '<b><font color="red">Could not remove directory "' . $dir . '". This may be due to a permissions problem.</font></b><br>';
  41. return false;
  42. } else
  43. return true;
  44.  
  45. return false;
  46. } // end of remdir()
  47. ?>


PHP.net: rmDir
Offline Thomas - 22/02/2006 23:23
Avatar van Thomas Moderator Je moet niet het "externe" pad pakken, maar het "interne" pad vanaf je document-root (alle lees, schrijf, kopieer, knip of verwijder-acties op bestanden dienen met $_SERVER['DOCUMENT_ROOT'] te beginnen).
Offline mike87 - 22/02/2006 23:31
Avatar van mike87 Nieuw lid Hoe zit het precies met Define, op regel 5?
Want ik test het script hele tijd op me eigen pc. Maar als ik het nu op het internet zou gaan gebruiken zie ik weinig goeds in iets dat verwijst naar je c:/ schijf 
Offline Ontani - 22/02/2006 23:42
Avatar van Ontani Gouden medailleGouden medailleGouden medailleGouden medaille

-1
nix van aantrekken dat mag zelfs weg.

gewoon zorgen dat $dir correct is.
Offline mike87 - 23/02/2006 00:04
Avatar van mike87 Nieuw lid Als ik $_SERVER['DOCUMENT_ROOT'] gebruik, krijg ik op me localhost c:/Appsers/www terug, maar hoe zorg ik dan dat vervolgens ook nog de map terug komt waarin me script draait?
Want mocht het op internet gaan draaien, en de map anders genoemt worden, moet het natuurlijk nog wel werken 
Offline Voldemort - 23/02/2006 16:56
Avatar van Voldemort PHP ver gevorderde $_SERVER['DOCUMENT_ROOT'].'/map/bestand.php'
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.204s