Avatar billede heden Nybegynder
28. oktober 2005 - 10:37 Der er 15 kommentarer og
1 løsning

Sletning ved hjælp af RMDIR

Er der nogle som har en fungerende

rmdir() kode som går ind og sletter en mappe + alt hvad der ligger i mappen?
Avatar billede jaw Nybegynder
28. oktober 2005 - 11:13 #1
Der er et eksempel her i hvert fald: http://dk2.php.net/rmdir
Avatar billede heden Nybegynder
28. oktober 2005 - 11:23 #2
Hvad for en er bedst at bruge?
Avatar billede jaw Nybegynder
28. oktober 2005 - 11:25 #3
Har ikke testet nogen af dem, men denne falder mig da først i øjnene:

function rmdirr($dir) {
  if($objs = glob($dir."/*")){
      foreach($objs as $obj) {
          is_dir($obj)? rmdirr($obj) : unlink($obj);
      }
  }
  rmdir($dir);
}

Og umiddelbart ser det da ikke tosset ud :)
Avatar billede heden Nybegynder
28. oktober 2005 - 11:33 #4
Nej den er heller ikke så lang .. haha :D
Avatar billede heden Nybegynder
28. oktober 2005 - 11:43 #5
Skal den bruge hele stien .. altså fra roden af? eller tror du den kan nøjes med "../filer/mappe"?
Avatar billede jaw Nybegynder
28. oktober 2005 - 11:52 #6
Du bør kunne nøjes med ../filer/mappe - men du må jo prøve det af. Den skal nok brokke sig, hvis den ikke kan finde biblioteket.
Avatar billede heden Nybegynder
28. oktober 2005 - 12:01 #7
Hmm det virker ik helt.. det ser sådan her ud nu:

<?php
require "db.php";
//Hvis der bliver trykket ja
if (isset($_POST['ja'])) {
$sti_start = $_SERVER["DOCUMENT_ROOT"];
$sti = str_replace("..", "", $sti);
$sti_hel = $sti_start ."/djmini". $sti;
$dir = $sti_hel;
function rmdirr($dir) {
  if($objs = glob($dir."/*")){
      foreach($objs as $obj) {
          is_dir($obj)? rmdirr($obj) : unlink($obj);
      }
  }
  rmdir($dir);
}
header("Location:slet_gal_valg.php");
}
?>

Men den sletter ikke mappen på serveren :/
Avatar billede heden Nybegynder
28. oktober 2005 - 12:07 #8
Den brokker sig heller ikke hvis jeg nøjes med at sige:

require "db.php";
//Hvis der bliver trykket ja
if (isset($_POST['ja'])) {
$dir = $_POST['sti'];
function rmdirr($dir) {
  if($objs = glob($dir."/*")){
      foreach($objs as $obj) {
          is_dir($obj)? rmdirr($obj) : unlink($obj);
      }
  }
  rmdir($dir);
}
header("Location:slet_gal_valg.php");
}
?>
Avatar billede jaw Nybegynder
28. oktober 2005 - 12:13 #9
Lad være med at smide alt muligt andet (pt. unødigt) fis ind i testefasen :) Test det som jeg pastede det fra php.net.
Avatar billede heden Nybegynder
28. oktober 2005 - 12:16 #10
Jamen det har jeg.. det er jo sådan set

if (isset($_POST['ja'])) {
$dir = $_POST['sti'];
function rmdirr($dir) {
  if($objs = glob($dir."/*")){
      foreach($objs as $obj) {
          is_dir($obj)? rmdirr($obj) : unlink($obj);
      }
  }
  rmdir($dir);
}
}

- altså uden header
Avatar billede jaw Nybegynder
28. oktober 2005 - 12:18 #11
Prøv:

if (isset($_POST['ja'])) {
  function rmdirr($dir) {
    if($objs = glob($dir."/*")){
      foreach($objs as $obj) {
        is_dir($obj)? rmdirr($obj) : unlink($obj);
      }
    }
    rmdir($dir);
  }
  rmddirr($_POST['sti']);
}
Avatar billede heden Nybegynder
28. oktober 2005 - 12:28 #12
så siger den:

Fatal error: Call to undefined function: rmddirr()
Avatar billede jaw Nybegynder
28. oktober 2005 - 12:30 #13
Det er jo fordi jeg har sat et d for meget ind -> rmdirr og ikke rmddirr
Avatar billede heden Nybegynder
28. oktober 2005 - 12:34 #14
Griner ja det så jeg også lige.. men nu sletter den fint :)
Avatar billede jaw Nybegynder
28. oktober 2005 - 12:36 #15
Fint, så vil jeg tillade mig at smide et svar :)
Avatar billede heden Nybegynder
28. oktober 2005 - 12:45 #16
Det er helt i orden..

Tak for det!

-lukket-
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester