Wolfgang: htaccess: Freigabe aus einem bestimmten Ordner

Beitrag lesen

Hey Leute,

entschuldigt, dass es dieses Mal so lange gedauert hat mit antworten.

»» Und ist diese Methode dann nicht auch von anderen möglich?
Wie meinst du das?

Damit war gemeint, wie ich verhinden kann, dass man z.B. durch Einfügen der Zeilen:

    { header("Content-Type: application/octet-stream");   // geeigneten HTTP-Header setzen  
      readfile("www.exaple.org/dataintern/" . $_GET['file']);   

von einer fremden Seite den Zugriff sperren kann.

Ich habe das Ganze jetzt wie folgt umgesetzt: (Falls mal jemand ein ähnliches Problem hat)

  
<?php  
session_start();  
if($_SESSION["loggedin"] == TRUE) {                                                    // wird von meiner auth.php gesetzt  
  
	$allowedDir  = array("dir1","dir2","dir3");		                    // erlaubte Verzeichnisse für den Download	  
	  
	// erlaubte Dateien für den Download  
	$allowedFile = array("file1.pdf","file2.zip","file3.jpg");  
	  
	if ( isset($_GET['dir']) && isset($_GET['file']) ) {                           // Wurden die Parameter übergeben?  
	   $dir = $_GET['dir'];  
	   $file = $_GET['file'];  
	  
	   if ( in_array($dir, $allowedDir) && in_array($file, $allowedFile) ) {       // Sind die Parameter erlaubt?  
	      header("Content-Type: application/force-download");                      // geeigneten HTTP-Header setzen  
	      header("Content-disposition: attachment; filename=\"".$file."\"");  
	      readfile($dir."/".$file);   	             			// Datei durchreichen  
	   } else {                                                                    // ungültiger Parameter  
             echo "Fehler: Zugriff auf angegebene Datei nicht erlaubt.\n";  
           }  
        } else {                                                                       // gar kein file-Parameter  
          echo "Fehler: Kein Dateiname angegeben.\n";  
        }  
} else {  
  echo "Sie sind nicht eingeloggt.\n"  
}  
?> 

Zusätlich befindet sich noch in jedem Verzeichnis dir1, dir2 und dir3 eine .htaccess Datei, die ein Admin-Kennwort abfragt, damit ich auf die Dateien zugreifen kann (Man kann theoretisch auch im übergeordneten Verzeichnis eine .htaccess anlegen).

Falls es da noch Verbesserungsvorschläge gibt, so bin ich für alles offen... :)

Ansonsten bedanke ich mich für die intensive Hilfe und wünsche noch eine gute Nacht,

Wolfgang