Moin!
wie im Titel schon geschrieben, seid ihr damit nun zufrieden?
Da erwartest Du jetzt was falsches. Es geht immer noch besser und es geht immer anders und immer hat die andere Methode Vor- und Nachteile.
Ich hatte ja vorgeschlagen, dass Du bei der Anmeldung den Benutzername und die Gruppen in die Session schreibst:
session_start();
$_SESSION['user_name']=$benutzername; # woher der Benutzername auch immer kommt!
foreach ($arGruppen as $strGruppe) { # Woher das Array mit den Gruppennamen
# auch immer kommt!
if ( user_in_group($benutzername, $strGruppe) ) # Die Funktion user_in_group musst Du
# selbst schreiben!
$_SESSION['groups'][$strGruppe]=true;
}
}
und dann einfach nur die Session abfragst um unnötige und langsame Datenbankzugriffe zu vermeiden:
<?php
session_start() # fehlt bei Dir!
$host = $_SERVER["HTTP_HOST"];
$uri = rtrim(dirname(htmlspecialchars($_SERVER["PHP_SELF"])), "/\\");
if ( empty($_SESSION['user_name']) ) {
//Falls: nicht eingeloggt
header('Location: http://$host$uri/login');
exit; #deklaratorisch. Hier soll ja auch nichts passieren - oder?
} else {
//Fall: eingeloggt
if (! empty($_SESSION['groups']['mitabeiter']) ) {
#Fall: eingeloggt und Mitarbeiter:
header('Location: http://$host$uri/index');
exit; #deklaratorisch. Hier soll ja auch nichts passieren - oder?
} else {
#Fall: eingeloggt und kein mitarbeiter:
#whatever
}
}
?>
Hintergrund ist, dass man die Daten des Benutzers eigentlich "aller furzlang" im Programm und einer Vielzahl von Skripten braucht.
Jörg Reinholz