Hello,
Vor dem Header NICHTS anderes senden, auch kein Leerzeichen!
OK, will ich machen - aber wie muss ich dann meine HTACCESS schreiben, dass das Skipt weiß, wo es die Zugangsdaten (.htuser) findet? Oder wo kann ich angeben, wo es nach den Zugangsdaten suchen soll?
Das Verfahren ist ja dann einwenig anders.
Wenn Du diesen Weg gehst, dann ist nicht mehr der Server derjenige, der den Zugang zu den Verzeichnissen gewährt. Der ist und bleibt über HTTP dann mittels .htaccess verboten. (obwohl man da auch mit doppeltem Boden arbeiten könnte)
Dein Script kann aber Daten, die in diesem von außen geschützten Verzeichnis liegen, an die User ausliefern. Das tut es dann aber nur, wenn diese sich authentifizieren.
Dazu musst Du nur einmal diesen Mechanismus in Gnag setzen, dass der Browser sein Anmeldefenster aufklappt. Das solltest Du auf der Hauptseite anbieten. Dann werden die Daten auf allen von der Hauptseite geborenen Kinder vom Browser automatisch mit an den Server gesendet.
Die Daten kannst Du dann entweder auch aus einer .htaccess-Datei holen. Die müsstest Du dann aber erst parsen, das gesendete Passwort verschlüsseln, (weil es in der htaccess-User-Datei so drinstehen muss) und könntest dann erst vergleichen. Oder aber Du baust Dir eine eigene Userdaten-Datei auf Ein serialisiertes Array und schwupps ist die fertig.
Habe ich hier eben gerade zum testen gemacht.
<?php ### create_userdata.php ###
$_data = array();
$_data['Thomas'] = 'cafetasse';
$_data['Jürgen'] = 'rosenstock';
$stream = serialize($_data);
file_put_contents('userdata.dat',$stream);
?>
<?PHP
function authenticate()
{
Header("WWW-authenticate: basic realm="Privater Bereich"");
Header("HTTP/1.0 401 Unauthorized");
#include("wunderbare_leider_nicht_Seite");
echo "Benutzerdaten erforderlich!";
exit;
}
//-------------- Hauptprogramm -----------------------------------
$data = file_get_contents("userdata.dat"); ## liegt z.B. im include_path
if (!$data) die ("Benutzerdatei ist nicht zugänglich");
$_userdata = unserialize($data);
$_headers = getallheaders();
if (isset($_headers['Authorization']))
{
$_auth = explode(' ',$_headers['Authorization']);
$cred = base64_decode($_auth[1]);
$_UN_PW = explode(':', $cred);
if (isset($_userdata, $_UN_PW[0], $_UN_PW[1], $_userdata[$_UN_PW[0]])
and ($_UN_PW[1] == $_userdata[$_UN_PW[0]]))
{
## und hier geht es dann weiter mit der Seitenberechnung
#include("wunderbare_Beguessungsseite");
## usw
}
else
{
authenticate();
}
$_headers = getallheaders();
$headerhtml = htmlspecialchars(print_r($_headers,1));
echo "<pre>\n";
echo $headerhtml;
echo "</pre>\n";
Ich habe hier den HTML-Teil abgeschnitten, daher vorstehendes in Kurzform.
?>
Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de
Tom
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau
Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)