Avatar billede delphiuser Mester
30. januar 2017 - 22:29 Der er 1 kommentar og
3 løsninger

Delete specific folder

Hej eksperter.

Jeg har lavet et lille system her lige nu hvor jeg har gjort sådan at når man opretter en profil i systemet. Så bliver der oprettet en mappe som hedder det samme som den email du har brugt. Altså en unik mappe kun til den ene person. Meningen er at i den mappe kan man have sit profil billed og andre billeder. Det virker fint.

Men problemet er når jeg vælger at slette min profil i systemet. skal den fjerne alle filer som ligger i mappen plus mappen. Jeg har fået den til at fjerne alle filerne fra mappen. men den vil også gerne fjerne mappen. men den fjerne sågar også den mappe som er mainfolder.

jeg har en mappe gruppe som ser sådan her ud.

public/images/profiles/eks@eks.dk
i den mappe der hedder eks@eks.dk - der kommer de billeder som brugeren nu engang oploader. når brugeren så vælger at slette sin profil skal den kun slette alle filerne i mappen eks@eks.dk og når de er slettet skal den så kun slette mappen eks@eks.dk. mit problem er at den sletter
profiles/eks@eks.dk - altså profiles er min main folder for profil mapper.

her kommer mit script. til at slette filer.

function delete_files($src) {
        if(is_dir($src)) {
            $targ = scandir($src);
            foreach ($targ as $item) {
                if($item != '.' && $item != "..") {
                    $item = $src . '/' . $item;
                    if(filetype($item) == "dir")
                        $this->delete_files($item);
                    else
                        unlink($item);
                }
            }
        }
    }

her kommer min function til at fjerne mappen

function delete_dir($src) {
        rmdir($src);
}

og tilsidst får i lige den function som sletter brugeren helt fra systemet

function delete() {
        $id = $_SESSION['userid'];
        $email = $_SESSION['email'];
        $sql = "delete from users where user_id='$id'";
        $sql1 = "delete from dagbog where user_id='$id'";
        $src = 'public/images/profiles'.$email;
        $this->delete_files($src);
        $this->delete_dir($src);
        $this->DB_CONN->query($sql);
        $this->DB_CONN->query($sql1);
        ?>
        <script type="text/javascript">
            window.location = "index.php?page=logout";
        </script>
        <?php
    }

håber i kan hjælpe mig med at få det løst. Har nu prøvet i gud ved hvor mange timer.
Avatar billede Slater Ekspert
31. januar 2017 - 08:31 #1
Mangler du ikke en skråstreg efter "profiles" her?
$src = 'public/images/profiles'.$email;

- Hvis $email af en eller anden grund er en tom streng, vil den vel ellers slette hele profiles mappen. Ved ikke om det er årsagen, men den stak lige ud.
Avatar billede Slater Ekspert
31. januar 2017 - 08:34 #2
Eller egentlig gør det jo ingen forskel, hvis $email af en eller anden grund skulle være en tom streng. Så vil det stadig være profiles der slettes. Burde nok have et tjek for det. Men igen, hvis den med sikkerhed aldrig er tom, så er det ikke årsagen til at den sletter den forkerte mappe. Så burde den netop ikke slette noget, hvis skråstregen mangler.
Avatar billede Rune1983 Ekspert
31. januar 2017 - 10:26 #3
Jeg har brugt denne funktion som jeg har tilpasset til. Måske den kan hjælpe.
function Remove_Entire_Folder($Folder)
    {
          if (is_dir($Folder))
          {
            $TotalAlleFiler = scandir($Folder);
            foreach ($TotalAlleFiler as $Filnavn) {
                if ($Filnavn != "." && $Filnavn != "..")
                {
                    if (is_dir($Folder."/".$Filnavn))
                        Remove_Entire_Folder($Folder."/".$Filnavn);
                    else
                        unlink($Folder."/".$Filnavn);
                }
            }
            rmdir($Folder);
        }
    }
Avatar billede delphiuser Mester
01. februar 2017 - 16:22 #4
Tak for jeres forslag allesammen. Jeg opdagede at min $_SESSION['email'] ikke var blevet sat rigtigt. så strengen var tom. det var derfor det ikke virkede.

Men nu virker det helt som det skal. Igen tak for hjælpen allesammen.
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

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