Avatar billede tommyf Nybegynder
13. maj 2003 - 20:26 Der er 26 kommentarer og
1 løsning

Lave sin egen Directory Listing

Jeg har ikke mulighed for directory listing på mit webhotel, kan man omgåes dette med et script? Eventuelt et script der så selv laver en oversigt.
Avatar billede mathiash Nybegynder
13. maj 2003 - 20:31 #1
Jep, se: http://www.php.net/manual/en/function.opendir.php

eksempel fra php.net:
<?php
$dir = "/tmp/";

// Open a known directory, and proceed to read its contents
if (is_dir($dir)) {
    if ($dh = opendir($dir)) {
        while (($file = readdir($dh)) !== false) {
            print "filename: $file : filetype: " . filetype($dir . $file) . "\n";
        }
    closedir($dh);
    }
}
?>

//Mathias
Avatar billede tommyf Nybegynder
13. maj 2003 - 20:37 #2
Da serveren er sat på SAFE MODE, virker det script desværre ikke :o|
Avatar billede ohmish Nybegynder
13. maj 2003 - 20:39 #3
jeg har safemode on på min server, og der virker ovenstående.
Avatar billede Slettet bruger
13. maj 2003 - 20:39 #4
tommyf> Heller ikke med en absolut sti?

(f.eks. wwwroot/servr/user2837/web)
Avatar billede mathiash Nybegynder
13. maj 2003 - 20:39 #5
:-(
Avatar billede ohmish Nybegynder
13. maj 2003 - 20:42 #6
<?php
  header("Content-disposition: medlemmer.txt");
  header("Content-type: application/ms-download");
  header("Pragma: no-cache");
  header("Expires: 0");

function listdir( $dir, $search ) {

    $mappe = opendir($dir) or die ("ikke fundet");
     
    while($fil = readdir($mappe)) { 

        if ($fil != "." && $fil != "..") {
                       
                if ( is_dir( $dir . $fil ) ) {
                                     
                    listdir( $dir .$fil ."/", $search ) or die ("ikke fundet");
                 
                } else if ( preg_match("/$search/i", $fil) ) {
echo "| \r\n";
readfile($dir.$fil);

                }
         
        }
     
    }
   
}

$search = "txt" ; // EVT. SØGEORD
$bunddir = "/" ; HOVEDMAPPE DER SKAL SØGES I OG UNDER
listdir( $bunddir, $search );

?>
Avatar billede ohmish Nybegynder
13. maj 2003 - 20:44 #7
"medlemmer.txt" er ligegyldig men skal slutte med .txt
Avatar billede ohmish Nybegynder
13. maj 2003 - 20:46 #8
hov.. sådan her:

<?php
  header("Content-disposition: mapper.txt");
  header("Content-type: application/ms-download");
  header("Pragma: no-cache");
  header("Expires: 0");

function listdir( $dir, $search ) {

    $mappe = opendir($dir) or die ("ikke fundet");
     
    while($fil = readdir($mappe)) { 

        if ($fil != "." && $fil != "..") {
                       
              if ( is_dir( $dir . $fil ) ) {
                                     
              listdir( $dir .$fil ."/", $search ) or die ("ikke fundet");
                 
              } else if ( preg_match("/$search/i", $fil) ) {
echo "| $dir $fil\r\n";

                }
         
        }
     
    }
   
}

$search = "txt" ; // EVT. SØGEORD
$bunddir = "/" ; HOVEDMAPPE DER SKAL SØGES I OG UNDER
listdir( $bunddir, $search );

?>
Avatar billede tommyf Nybegynder
13. maj 2003 - 20:47 #9
ohmish >> Den siger fejl i linjer 31 (den med "hovedmappen der skal søges i")

Mathiash >> Din virker med den fulde sti. Jeg ville dog gerne hvis man kunne klikke på dem, eller stille dem lidt pænere op.
Avatar billede ohmish Nybegynder
13. maj 2003 - 20:50 #10
nååh.. ret de sidste linier til:

$search = "txt" ; // EVT. SØGEORD
$bunddir = "/" ; // HOVEDMAPPE DER SKAL SØGES I OG UNDER
listdir( $bunddir, $search );

?>
Avatar billede ohmish Nybegynder
13. maj 2003 - 20:53 #11
kig generelt altid i linien over og under for fejl, når php angiver linienr. det passer nemlig ikke altid.
Avatar billede detox Nybegynder
13. maj 2003 - 20:56 #12
Jeg har løst det samme problem ved at smide en .htaccess-fil med: Options +Indexes i den mappe jeg ville liste.
Avatar billede tommyf Nybegynder
13. maj 2003 - 20:59 #13
ohmish >> Nu forsøger den at downloade siden når jeg går ind på den :)

Jeg vælger detox løsning, hvis han vil smide et svar, da den er hurtig, enkel og fungere med undermapper :)
Avatar billede nomak Nybegynder
13. maj 2003 - 21:03 #14
<?
/*
Dette script er beregnet til directory-listing.
Filtype-listen er langt fra komplet, da jeg kun har
tilføjet dem, som jeg selv kunne finde på at bruge.
*/

// Start på tabellen.
echo "<table style=\"border: 1px solid #000000;width:100%;\" cellspacing=\"0\" cellpadding=\"2\">";
echo "<tr><td style=\"background-color:#ccc;color:#000;\"><b>File/Handle:</b></td><td style=\"background-color:#ccc;color:#000;\"><b>Type</b></td><td style=\"background-color:#ccc;color:#000;\"><b>Size</b></td></tr>";

// Vælger mappe der skal listes.
if ($handle = opendir('.'))
{
    // Countere
    $i = 0;
    $num_files = 0;
    $num_dirs = 0;

    // Start på løkken (http://php.net/readdir).
    while (false !== ($file = readdir($handle)))
    {
        // Sørger for at index-filen ikke kommer med i listen.
        if ($file != "index.php")
        {
            // Liste over filtyper og tælling af filer/mapper
            if (substr($file,-5)==".phps")
            {
                $type = "PHP Sourcecode";
                $num_files = $num_files+1;
            }

            elseif (substr($file,-4)==".php")
            {
                $type = "PHP Script";
                $num_files = $num_files+1;
            }

            elseif (substr($file,-4)==".txt")
            {
                $type = "Text Document";
                $num_files = $num_files+1;
            }

            elseif (substr($file,-5)==".html")
            {
                $type = "HTML Document";
                $num_files = $num_files+1;
            }

            elseif (substr($file,-4)==".zip" || substr($file,-4)==".rar" || substr($file,-4)==".ace")
            {
                $type = "Compressed archive";
                $num_files = $num_files+1;
            }

            elseif (substr($file,-4)==".exe" || substr($file,-4)==".bat")
            {
                $type = "Program";
                $num_files = $num_files+1;
            }

            elseif (substr($file,-4)==".jpg" || substr($file,-5)==".jpeg" || substr($file,-4)==".jpe" || substr($file,-5)==".jfif")
            {
                $type = "JPEG compressed bitmap";
                $num_files = $num_files+1;
            }

            elseif (substr($file,-4)==".gif")
            {
                $type = "CompuServe bitmap";
                $num_files = $num_files+1;
            }

            elseif (substr($file,-4)==".bmp")
            {
                $type = "Windows bitmap";
                $num_files = $num_files+1;
            }

            elseif (substr($file,-4)==".png")
            {
                $type = "PNG bitmap";
                $num_files = $num_files+1;
            }

            elseif (substr($file,-4)==".sql")
            {
                $type = "SQL File";
                $num_files = $num_files+1;
            }

            // Filtyper der ikke er med i listen, bliver stemplet som mapper.
            else
            {
                $type = "Directory";
                $num_dirs = $num_dirs+1;
            }

            // Bestemmelse af filstørrelse

            // Hvis filen er over 1024 bytes
            if(filesize($file)>1024)
            {
                // Skal tallet rundes ned til kilobyte, med én decimal
                $size = round(filesize($file)/1024,1);
                // Og have "KB" bagefter
                $size = $size."KB";
            }
            else
            {
                // Ellers skrives antal bytes, efterfulgt af "B"
                $size = filesize($file)."B";
            }

            // Tælleren skal selvfølgelig tælle.
            $i++;

            // Skiftevis celle-baggrundsfarve baseret på resten af $i divideret med 2.
            if (($i%2) == 1) $col = "#ffffff"; else $col = "#efefef";

            // Filerne en efter en, i en række for sig selv.
            echo "<tr><td style=\"background-color:$col;color:#000;\"><a href=\"$file\">$file</a></td><td style=\"background-color:$col;color:#000;\">$type</td><td style=\"background-color:$col;color:#000;\">$size</td></tr>\n";
        }
    }
    // Mappen lukkes.
    closedir($handle);
    // Tabellen afsluttes
    echo "</table>";
    // Antal filer og mapper skrives
    echo "<b>".$num_files."</b> filer og <b>".$num_dirs."</b> mapper.";
}
?>

kald den index.php :)
Avatar billede ohmish Nybegynder
13. maj 2003 - 21:04 #15
ok, det gør min ellers også.

du ka rette det hele til:

<?php
function listdir( $dir, $search ) {

    $mappe = opendir($dir) or die ("ikke fundet");
     
    while($fil = readdir($mappe)) { 

        if ($fil != "." && $fil != "..") {
echo "| $dir $fil<br>";
                       
              if ( is_dir( $dir . $fil ) ) {
                                     
              listdir( $dir .$fil ."/", $search );
                 
              } else if ( preg_match("/$search/i", $fil) ) {
echo "| $dir $fil<br>";

                }
         
        }
     
    }
   
}

$search = "txt" ; // EVT. SØGEORD
$bunddir = "/" ; // HOVEDMAPPE (og dennes undermapper) DER SKAL SØGES I
listdir( $bunddir, $search );

?>


SÅ spiller det!
Avatar billede tommyf Nybegynder
13. maj 2003 - 21:07 #16
ohmish >> open_basedir restriction in effect. File(/) is not within the allowed path(s):
Avatar billede detox Nybegynder
13. maj 2003 - 21:08 #17
Husk at du osse kan lægge en Headerfil ind, hvis du har brug for det.
Så skal du bare tilføje: HeaderName dintekstfil.txt i din .htaccess.
Avatar billede tommyf Nybegynder
13. maj 2003 - 21:10 #18
Det må du gerne uddybe?
Avatar billede detox Nybegynder
13. maj 2003 - 21:18 #19
Hvis du har brug for en forklarende tekst på siden du lister, kan du lave en tekstfil og skrive: "HeaderName dintekstfil.txt" (uden "") i din .htaccess.
Li'som du osse kan bruge dine egne ikoner til de forskellige filtyper.
Avatar billede ohmish Nybegynder
13. maj 2003 - 21:18 #20
hmm meget hurtig afvisning.

det her virker jo:

<?php
function listdir( $dir, $search ) {

    $mappe = opendir($dir) or die ("mappe ikke fundet");
     
    while($fil = readdir($mappe)) { 

        if ($fil != "." && $fil != "..") {
echo "| $dir $fil<br>";
                       
              if ( is_dir( $dir . $fil ) ) {
                                     
              listdir( $dir .$fil ."/", $search );
                 
              } else if ( preg_match("/$search/i", $fil) ) {
echo "| $dir $fil<br>";

                }
         
        }
     
    }
   
}

$search = "txt" ; // EVT. SØGEORD
$bunddir = "./" ; // HOVEDMAPPE (og dennes undermapper) DER SKAL SØGES I
listdir( $bunddir, $search );

?>
Avatar billede tommyf Nybegynder
13. maj 2003 - 21:24 #21
ohmish >> Nu ikke tage det så tungt. Du fik 3 forsøg, men detox havde s¨å noget der var hurtigere og fungerede.

detox >> Har du en guide til de forskellige muligheder? Det kunne da godt være interessant at sætte sine egne ikoner på :)
Avatar billede schaefner Juniormester
13. maj 2003 - 21:26 #22
Avatar billede detox Nybegynder
13. maj 2003 - 21:30 #23
Ovenstående er fin, denne her synes jeg osse er god:
http://javascriptkit.com/howto/htaccess.shtml
Avatar billede nomak Nybegynder
13. maj 2003 - 21:47 #24
Jeg fik ikke noget forsøg? den blev bare afvist *S*
Avatar billede tommyf Nybegynder
13. maj 2003 - 21:50 #25
Jeg nåede ikke at prøve din før beslutningen var truffet, men I skal alle have tages for jeres engagement i mit spørgsmål :)
Avatar billede ohmish Nybegynder
13. maj 2003 - 22:01 #26
selv tak. det gik jo stærkt det her! man ska saftsusemig være på pletten når det sker for at få et ben med her...hehe
Avatar billede fangel Nybegynder
14. maj 2003 - 07:35 #27
jeg har lavet dette system... det er ikke helt færdigt udviklet, og det bliver det nok aldrig (gymnasiet tager sin tid)...

http://mfa.ath.cx/DeSi_OFMS_1rc4.zip

det laver listning af filer og mapper, så kan du åbne alle filer og ændre i dem, eller du kan åbne en mappe og liste den... ;)

::OBS:: der er stadig fejl i, jeg fralægger mig et hvert ansvar for tab af filer ::OBS::

men kig på systemet... (ikke verdens bedste kode da funktioner er tilføjet efterhånden, men systemet virker)

Morten
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