Mailinglisten-Archive |
Bernhard Ostheimer <Bernhard.Ostheimer_(at)_Uni-Mainz.de> schrieb, > Da mit dem Login auch MySQL-Befehle "verkünpft" sind (bestimmter User soll nur bestimmte > Datensätze erhalten) kommt wohl eine Authentifizierung mittels .htaccess-Datei > nicht in Frage. Doch. Wenn Dein Apache das Modul mod_auth_mysql verwendet, kannst Du auch per .htaccess den Zugang über eine MySQL-DB realisieren. Das ist die einfachste Lösung, bei der das Apache Modul dafür sorgt, daß nur Benutzer mit Account bzw. bestimmter Gruppenzugehörigkeit auf einzelne Dateien oder Verzeichnisse zugreifen können und Dein PHP-Script dann für die Feinanpassung an diesen User sorgt. Ich schreibe häufig Anwendungen, bei denen auch anonyme Benutzer auf die Seiten zugreifen können sollen, aber angemeldete Benutzer besondere Möglichkeiten haben. Das geht dann nicht mehr per .htaccess. In diesem Fall läuft die gesamte Autentifizierung über PHP. Der Benutzer kann sich z.B. per login.php anmelden, was in etwa so aussehen könnte: if (!$PHP_AUTH_USER) { Header("WWW-authenticate: basic realm=\"server\""); Header("HTTP/1.0 401 Unauthorized"); Header("Location: /member"); exit; } else { $username=strtolower($PHP_AUTH_USER); $password=$PHP_AUTH_PW; $userdata=mysql("user","select * from wwwuser where username='$username' and password='$password'"); $u=mysql_fetch_array($userdata); mysql_free_result($userdata); if (!$u) { Header("WWW-authenticate: basic realm=\"server\""); Header("HTTP/1.0 401 Unauthorized"); Header("Location: /member"); exit; } } Wenn der Benutzer sich angemeldet hat, schickt sein Browser bei jedem weiteren Seitenzugriff Benutzername und Passwort mit (Basic Authentication eben), die Dir in den Variablen $PHP_AUTH_USER und $PHP_AUTH_PW zur Verfügung stehen, um die Webseiten entsprechend anzupassen. Ich lese damit am Anfag jeder Seite erstmal die Benutzerdatenbank aus und erzeuge mir ein Array mit dem Benutzereigenschaften: if ($PHP_AUTH_USER) { $user=strtolower($PHP_AUTH_USER); $password=$PHP_AUTH_PW; $result=mysql("user","select * from user u, usergroup v where username='$user' and password='$password' and u.userid=v.userid order by groupid"); $u=mysql_fetch_array($result); $u['groups']=",0"; while ($x=mysql_fetch_array($result)) { $u['groups'].=",".$x['groupid']; } $u['groups'].=","; $uid=$u['userid']; mysql_free_result($result); } else { $uid=0; } Gruß, Reiner
php::bar PHP Wiki - Listenarchive