.htacces und php

turtledino

Mitglied
Hallo,
ist es möglich, per .htacces, oder irgendwie anders, den zugriff auf die Dateien in einem Ordner zu verbieten, es sei denn man kommt von einer bestimmten seite.
Bsp:
Ich komme von google.de-->und will domain.de/ordner/blabla.zip, dann soll der Zugriff verweigert werden.
ABER:
wenn ich von domain.de/index.php komme--> und will domain.de/ordner/blabla.zip, dann soll der Zugriff erlaubt werden.
Wenn das so nicht möglich ist, kann ich dann mit .htaccess überprüfen ob eine Session Variable gesetzt ist?
Falls irgendetwas davon klappen sollte,
bitte ich um eine genau beschreibung, denn ich habe mich noch nie mit .htacces beschäftigt.
Schon mal Danke im Vorraus.
 
Zuletzt bearbeitet:
Geht problemlos, da die htaccess nicht für systeminterne Zugriffe gilt (PHP macht keinen HTTP-Request um auf die Datei zuzugreifen)
 
Original geschrieben von Sir Robin
Geht problemlos, da die htaccess nicht für systeminterne Zugriffe gilt (PHP macht keinen HTTP-Request um auf die Datei zuzugreifen)

erstmal Danke für die schnelle Antwort, aber damit kann ich nichts anfangen.
Also klappt das mit .htacces? Und was muss ich denn in die .htacces reinschreiben?
 
Wenn es hieb-und stichfest sein soll, mach es über die Session-Variable.....HTTP_REFERER ist keine Servervariable, auf welche man 100%ig setzen kann.

Du könntest es bspw. so machen.....
packe die Datei in ein geschütztes Verzeichnis-->

anstatt direkt irgendwo auf die Datei zu verlinken, verlinke auf eine PHP-Datei ausserhalb des geschützen Verzeichnisses-->

dieses PHP-Skript prüft das Vorhandensein deiner Session-Variable, und sendet beim gewünschten Ergebnis einen entsprechenden header() und gibt die geschützte Datei per readfile() aus....

es wäre damit nur möglich, über das PHP-Skript an die Datei heranzukommen.
 
Ok,
das mit der PHP datei und der Session Variable, habe ich jetzt hinbekommen, aber was muss ich in die .htaccess Datei reinschreiben?
 
mit der .htaccess musst du die zu schützende Datei schützen:-)

Entweder nur die Datei(falls es sich nur um eine einzige handelt)....oder das ganze Verzeichnis(falls du mehrere Dateien schützen willst, und diese sich alle im selben Verzeichnis befinden)....

wie das geht, steht bspw. bei SelfHTML
 
OK,
habe jetzt das verzeichnis geschützt. Das klappt auch.
Und das ist meine PHP Datei:
PHP:
<?php 
session_start();

$defaulturl = "fehler.php";
$tld = explode (".", $file);

if ($_SESSION['geheim'] == "nochgeheimer")
{ 
 if ($tld[2] == "zip")
 {
  header("Content-type: application/zip");
 }
 if ($tld[2] == "rar")
 {
  header("Content-type: application/x-rar-compressed");
 }
 if ($tld[2] == "exe")
 {
  header("Content-type: application/octet-stream");
 }
 header ("Content-Disposition: attachment; filename=$file");
 readfile ("downloads/$file");
} 
else 
{ 
 header("Location: $defaulturl"); 
} 
?>
Aber irgendwie klappt das nur mit zip Dateien. Bei rar, will er ein HTML-Dokument downloaden. Und bei exe, funktioniert die runtergeladene Datei nicht mehr.
Was habe ich nur Falsch gemacht?
 
OK, habs nochmal anders gemacht:
PHP:
<?php 
session_start();

$defaulturl = "fehler.php";
if ($_SESSION['geheim'] == "geheim")
{ 
 header("Content-Description: File Transfer");
 header("Content-Type: application/force-download");
 header("Content-Type: application/octet-stream");
 header("Content-Type: application/download");
 header("Content-Transfer-Encoding: binary");
 header("Content-Disposition: attachment; filename=".basename($file)."");
 @readfile("doenerloads/".$file);
} 
else 
{ 
 header("Location: $defaulturl"); 
} 
?>
Jetzt klappt es mitt allem, außer exe, was mache ich denn Falsch? Der lädt meine exe Date zwar runter, aber wenn ich sie ausführen will, dann gibt er mir eine Fehlermeldung aus.
 
Zurück