Verzeichnis schützen mit PHP + htaccess

Lord-Roli

Mitglied
Hallo,

ist folgendes möglich:

Es gibt ein Verzeichnis, indem Dateien drin sind, die man erst nach dem einloggen vom System sehen sollen dürfte.

Geht es, das ich das Verzeichnis für nicht eingeloggte Benutzer sperre, und wenn diese sich dann über PHP einloggen, dann wieder freigibt?
Über Lösungsvorschläge würde ich mich freuen.


Gruß
Ralf
 
Verzeichnisse kannst du über .htaccess schützen, der Login wäre dann allerdings nicht mehr über php.
Du könntest allerdings eine index.php in dem Verzeichnis ablegen, was dir den Inhalt entsprechent darstellt (oder auch nicht).
 
hm ne, ein kunde möchte gern das so beschrieben.
Schade das es nicht möglich ist, muss ich mir nun was einfallen lassen, wie ich ihm das am besten erkläre..
 
Wenn du dort eine index.php ablegst,
die genau das macht was du möchtest, und beim Einloggen das Verzeichnis darstellt, ist das doch genau das was du suchst?
 
Um was für Dateien handelt es sich denn? Bilder und dergleichen kannst du nur mit .htaccess schützen, es sei denn es ist eine PHP-Datei die das Bild ausgeben wird, womit du dir aber viel zu viel Arbeit machst. Wenn es nur PHP-Dateien sind, kannst du am Anfang jeder Datei (per Include) prüfen ob der User eingeloggt ist.
Viel einfacher wäre es allerdings, den Zugang zu dateien außer der index.php generell zu sperren und sämtliche benötigten Inhalte nachzuladen (AJAX/include).
 
Soweit ich weiß, ließen sich die Verzeichnisse über .htaccess sperren von außen. Flash sollte dann trotzdem noch herankommen.
 
Also ich habs jetz mal so probiert:

.htaccess
Code:
AuthName "User"
AuthType Basic
AuthUserFile "pfad/.htpasswd"
require valid-user

login.php
PHP:
<?php
session_start();

if(isset($_POST)) {

$_SESSION['username'] = $_POST['username'];
$_SESSION['pass'] = md5($_POST['password']);

$_SERVER['PHP_AUTH_USER'] = $_SESSION['username'];
$_SERVER['PHP_AUTH_PW'] = $_SESSION['pass'];

$login = $_SESSION['username'].':'.$_SESSION['pass'];
$url ="http://pfad/test/";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($ch, CURLOPT_USERPWD, $login);
curl_setopt($ch, CURLOPT_FORBID_REUSE, true);
curl_setopt($ch, CURLOPT_FRESH_CONNECT, true);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.0; da; rv:1.9.0.11) Gecko/2009060215 Firefox/3.0.11');
$contents = curl_exec($ch);
if ($contents === false) {
        trigger_error('Failed to execute cURL session: ' . curl_error($ch), E_USER_ERROR);
}
echo "Autorisiert<br />";
?>
Link zur TextDatei: <a href="test/testtet.TXT">Link</a><br />
<?}?>

würde soweit funktionieren, nur wenn ich jetz die Textdatei aufrufen möchte, fragt er mich nochmal nach den Logindaten, kann man das irgendwie umgehen, bzw. irgendwie sagen, das der login schon erfolgreich war?
 
Zurück