Avatar billede michaeljuul Nybegynder
12. marts 2005 - 15:43 Der er 2 kommentarer og
1 løsning

Skjul min index.php i et Dir?

Jeg bruger dette script til at folk kan se hvad der er i et Dir, og de kan så uploade der til.
Problemet er at man kan se min index.php når man kommer ind i det Dir.

Hvordan kan jeg skjule index.php så det kun er de andre filer man kan se?


/Michal
Avatar billede michaeljuul Nybegynder
12. marts 2005 - 15:44 #1
Her er mit script:

<?php

/* Funktioner der benyttes */

function list_filer($bibliotek) {

  if($bib = @opendir($bibliotek)) {
    /**
    * Denne syntaks er forklaret i PHP-manualen:
    * http://www.php.net/manual/en/function.readdir.php
    */
    while (false !== ($fil = readdir($bib))) {
      if($fil != "." && $fil != ".." && !ereg("^\..+", $fil)) {
          $fil_liste[] = "<a href=\"$bibliotek/$fil\">$fil</a>";
      }
    }
    closedir($bib);

    if(is_array($fil_liste)) {
      $liste = "<li>" . join("</li><li>", $fil_liste) . "</li>";
    } else {
      $liste = "<li>Ingen filer p&aring; lager</li>";
    }
    return "<h2>Filer p&aring; lager:</h2><ul>" . $liste . "</ul>";
  } else {
    die("Kunne ikke &aring;bne biblioteket: " . $bibliotek);
  }

}

function upload_fil($fil, $max_stoerrelse = 100000, $bibliotek = "default", $filtyper_tilladt = "default") {

    if ($bibliotek == "default") {
        $bibliotek = "../Elforsyning";
    }

    if ($filtyper_tilladt == "default") {
        $filtyper_tilladt = array("image/bmp", "image/jpeg", "image/pjpeg", "image/tiff", "image/png", "image/gif", "application/vnd.ms-excel", "application/msword", "application/pdf", "application/zip", "application/arj", "application/exe", "application/x-zip-compressed", "application/octet-stream");
    }


    if ($fil["size"] > 0) {
       
        $filnavn = strtolower(ereg_replace(" ", "_", $fil["name"]));
        $fra = $fil["tmp_name"];
        $til = $bibliotek . "/" . $filnavn;
        $fil_stoerrelse = filesize($fra)/10240;
        $filtype = $fil["type"];
        $fejl = 0;

        if (!in_array($filtype, $filtyper_tilladt)) {
            echo "<p>Filtypen '$filtype' er ikke tilladt. De tilladte filtyper er '" . implode("', '", $filtyper_tilladt) . "'. Filen '$filnavn' kan derfor ikke uploades!</p>";
            $fejl = 1;
        }
        if ($fil_stoerrelse > $max_stoerrelse) {
            echo "<p>Filen '$filnavn' er for stor og kan ikke uploades. Den fylder " . ceil($fil_stoerrelse) . " kb og der kan maximalt uploades $max_stoerrelse kb!</p>";
            $fejl = 1;
        }
        if ($fejl == 0) {
            if (file_exists($til)) {
               
                $pos = strrpos($filnavn, ".");
                $foerpos = substr($filnavn, 0, $pos);
                $efterpos = substr($filnavn, $pos + 1, strlen($filnavn) - ($pos + 1));
                $i = 2;
               
                echo "<p>Filen '$filnavn' eksisterer allerede i '" . $bibliotek . "' og filen omdøbes derfor til ";
               
                while (file_exists($til)) {
                    $filnavn = $foerpos . "(" . $i . ")." . $efterpos;
                    $til = $bibliotek . "/" . $filnavn;
                    $i++;
                }
                echo "'$filnavn'</p>";
            }

            if (move_uploaded_file($fra, $til)) {
                return $fil_sti;
            } else {
                echo "<p>Desværre, filen '$filnavn' kunne ikke uploades!</p>";
                return false;
            }
        }
    } else {
        echo "<p>Der er ikke vedhæftet nogen fil!</p>";
    }
}

/* Siden starter */

if ($_POST[sendknap]) {

    $fil = $_FILES["upfil"];
    upload_fil($fil);

}
?>

<form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post" enctype="multipart/form-data">
<fieldset>
  Upload fil<br />
  <input type="file" name="upfil" size="30" /><br />
  <input type="submit" name="sendknap" value="Upload" />
</fieldset>
</form>

<?php
echo list_filer("../Elforsyning");
?>
Avatar billede detox Nybegynder
12. marts 2005 - 19:28 #2
Du kan ændre:

if($fil != "." && $fil != ".." && !ereg("^\..+", $fil)) {

til:

if($fil != "." && $fil != ".." && $fil != "index.php" && !ereg("^\..+", $fil)) {
Avatar billede michaeljuul Nybegynder
13. marts 2005 - 09:54 #3
Lækkert det var lige det :-)
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