Avatar billede Torben_tt Nybegynder
12. september 2010 - 12:30 Der er 5 kommentarer

Hjælp til ændring af simpel PHP kode

Hejsa

Jeg har fundet nedenstående kode som kan bruges til at vise indholdet af en mappe. Jeg vil gerne indgå at den viser "sig selv", dvs. index.php skal ikke vises.

Det mest optimale ville være hvis man i php filen kunne definere hvilke filtyper der skal listes (f.eks. *.zip, *.exe) men det næstbedste er at den ikke lister index.php, samt ikke viser totalt antal filer.

På forhånd tak.





// open this directory
$myDirectory = opendir(".");

// get each entry
while($entryName = readdir($myDirectory)) {
    $dirArray[] = $entryName;
}

// close directory
closedir($myDirectory);

//    count elements in array
$indexCount    = count($dirArray);
Print ("$indexCount files<br>\n");

// sort 'em
sort($dirArray);

// print 'em
print("<TABLE border=1 cellpadding=5 cellspacing=0 class=whitelinks>\n");
print("<TR><TH>Filename</TH><th>Filetype</th><th>Filesize</th></TR>\n");
// loop through the array of files and print them all
for($index=0; $index < $indexCount; $index++) {
        if (substr("$dirArray[$index]", 0, 1) != "."){ // don't list hidden files
        print("<TR><TD><a href=\"$dirArray[$index]\">$dirArray[$index]</a></td>");
        print("<td>");
        print(filetype($dirArray[$index]));
        print("</td>");
        print("<td>");
        print(filesize($dirArray[$index]));
        print("</td>");
        print("</TR>\n");
    }
}
print("</TABLE>\n");
Avatar billede majbom Novice
12. september 2010 - 13:25 #1
du kan ændre scriptet til at bruge glob i stedet for opendir, der kan du definere hvilke filtyper du vil liste: http://dk.php.net/glob
Avatar billede showsource Seniormester
13. september 2010 - 06:22 #2
Antal filer er jo linien:
Print ("$indexCount files<br>\n");

Ud over at bruge andre metoder til at læse et dir igennem:


// filtyper som kan vises
$filetypes = array("php", "jpg", "pdf", "html", "html");

// filnavne som IKKE skal vises
$badfiles = array(".htaccess", "index.php", "index.html", "index.htm");

$dirArray = array();

// open this directory
$myDirectory = opendir(".");

// get each entry
while($entryName = readdir($myDirectory)) {

    // Hvis det er en fil, og filnavn ikke findes i badfiles array'et
    if(is_file($entryName) && !in_array(strtolower($entryName), $badfiles)) {

    // Finder filtypen, ud fra filnavn
    $typen = pathinfo(strtolower($entryName), PATHINFO_EXTENSION);

        // Hvis filtypen er i array'et $filtyper
        if(in_array($typen, $filetypes)) {
        $dirArray[] = $entryName;
        }

    }
}

// close directory
closedir($myDirectory);
Avatar billede Torben_tt Nybegynder
13. september 2010 - 19:41 #3
Tak for hjælpen, den fik mig næsten i mål!

Med tilføjelse af ovenstående kan jeg styre filtyper, men nu vises undermapper ikke længere. Er der en simpel måde at få vist disse på?
Avatar billede showsource Seniormester
14. september 2010 - 07:17 #4
Nåhh, jeg troede du kun vil vise filer.


// get each entry
while($entryName = readdir($myDirectory)) {

    // Hvis det er en fil, og filnavn ikke findes i badfiles array'et
    if(is_file($entryName) && !in_array(strtolower($entryName), $badfiles)) {

    // Finder filtypen, ud fra filnavn
    $typen = pathinfo(strtolower($entryName), PATHINFO_EXTENSION);

        // Hvis filtypen er i array'et $filtyper
        if(in_array($typen, $filetypes)) {
        $dirArray[] = $entryName;
        }

    }else{ // Det er et dir

        if($entryName == "." || $entryName == "..") {
        continue;
        }

    $dirArray[] = $entryName;

    }
}
Avatar billede majbom Novice
10. november 2010 - 14:17 #5
kom du videre torben?
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