User mit verschiedenen Rechten

fotia1980

Mitglied
Hallo zusammen,

ich suche keinen fertigen Code, ich habe nur eine Frage zu einem Gedankenspiel von mir.

Ich habe auf meiner Homepage eine Member Area. DerZeit nur ein User dem Admin. In der Members Area, kann er gewisse Contents auf der Seite aktualisieren. Zum Beispiel " Was ist neu auf der Seite", Gästebucheinträge kommentieren oder Dateien hochladen.

Jetzt habe ich mir überlegt diesen Membersbereich auszubauen. Der Gedanke meiner Familie ebenfalls einen Login zu geben, damit die Familie untereinander Daten austauschen kann die zu groß sind um Sie per Email zu verschicken.

Die Anderen Personen sollen aber keinen Zugriff auf die Bereiche haben, wie Inhalte der Seite verändert werden können, sondern Sie sollen nur dateien Hochladen können und wieder herunterladen und andere sollen nur dateien herunterladen können aber nicht hochladen.

Jetzt habe ich mir das so überlegt, da ich eine MySQL-Tabelle angelegt habe wo ID, Username und Passwort gespeichert sind, habe ich eine weitere Spalte "rechte" hinzugefügt.

Jetzt habe ich 3 Kategorien: 3 = Adminrechte, 2 = lesen/schreiben, 1 = Nur lesen.

Jetzt kommt der Punkt wo ich hänge, ich habe es zwar realisiert dass ein Script diese Kategorien abfragt und dementsprechen die Navigationsleiste anpasst. Das klappt auch super. Er kann die entsprechenden PHP Links nicht mehr direkt klicken. Aber er könnte ihn aber mit der direkten Eingabe dennoch aufrufen.

Der Memberbereich aarbeitet mit Session, und ein Checkuser Script checkt auch, ob eine Session läuft und wenn nicht wird man auf die login-Seite umgeleitet. Aber wie er weitere ich das ganze jetzt, dass er nicht nur abfragt ob generell eine Session besteht sondern so, dass er zurest abgfragt "Besteht eine Session" und wenn ja, dann "welche rechte hat ein User. Wobei der Admin dann natürlich auf alle bereiche zugriff hat.

soweit die Theorie aber ich habe keinerlei Plan wie ich das letztlich umsetzen soll. Hat jemand einen Ansatz?
 
Hi,

wenn ich das richtig verstanden habe, brauchst du doch nur den Rechtestatus beim Anmelden in einer Sessionvariablen zu speichern. Den fragst du am Anfang des jeweiligen Scrips ab und wenn er nicht die passenden Rechte hat, leitest du ihn zurück zur Hauptseite.
PHP:
if ($_SESSION[status] != 3){
    header ....
}
 
Zuletzt bearbeitet:
Der Zeit hat die Session den Namen des Users.

Deshalb habe ich es bis jetzt wie folgt versucht:

PHP:
<?php 
$string = $_GET['section'];
$level = $_GET['level'];
$exp = explode("_", $string);

session_start (); 
if (!isset ($_SESSION["username"]))  //Session wird abgefragt!
{
	if($exp[0] == 'member') //Wenn keine Session besteht wir die Section abgefragt
{ 
  header ("Location: index.php?section=login"); //Befindet er sich in der Section "member" und es besteht keine Session, wird auf die Login-Seite umgeleitet.
} }

include("zugriff.inc.php");

//Abfrage der Rechte
$abfrage = "SELECT rechte FROM L4U_user WHERE username LIKE '$username' LIMIT 1";
$ergebnis = mysql_query($abfrage);
$row = mysql_fetch_object($ergebnis);

	if($row->rechte != $level) //Vergleich der Userrechte mit der aufgerufenen URL
{ 
	if($exp[0] == 'member') //Befindet sich der User in der Members-Section?
{ 

  header ("Location: ?section=error"); //Aufruf der Fehlerseite
}}
?>

Hier habe ich aber das Problem dass der Admin, der ja alle Members-Seiten sehen können soll. Doch er sieht nur die, welche den Levelwert 3 haben. Aber bei den Seiten die die andern Werte enthalten (also 1 und 2) bekommt er den Error.

Ich habe schon versucht das ganze mit einem kleinergleich -Vergleich zu machen aber dann sieht er nur alle Seiten die kleiner als 3 sind also 1 und 2.

Also irgendwo habe ich den denkfehler drin. :confused:

Aber wenn ich deinen Ansatz richtig verstehe muss ich für jede Seite einen eigenen Header machen, Also muss die Seite wo nur der Admin zugriff hat einen anderen Header haben als die der anderen, das möchte ich wenn möglich vermeiden, deshalb die Idee das ganze über einen Link über einen $_Get.
 
Zuletzt bearbeitet:
Hi,

über GET das ganze zu machen ist für mich die schlechteste Lösung, da der Wert über die Adressenleiste ganz einfach geändert werden kann. Rechte gehören immer dahin, wo sie am wenigsten manipuliert werden können.
Mir ist der Ansatz mit dem separaten Header sowieso nicht ganz klar, aber ich muß ja auch nicht alles verstehen. Auf jeden Fall muß die jeweilige Seite unveränderbar wissen, wer rein darf und wer nicht. Das kannst du entweder in der Seite selbst festlegen oder du baust eine zusätzliche DB Tabelle, in der die Seite jedesmal nachsieht, welches Rechtelevel sie braucht.
 
Jetzt wo du es sagst, hast du recht, das $_GET nicht so gut ist! Aber das zeigt es auch ein wenig, Dass ich hier i-wie in einer Sackgasse hänge, weil ich schon alleine von der logig her nicht so recht weiß wie ich es umsetzen soll und nicht im schritt hänge "Ich weißt wie es funktionieren soll, aber weiß nicht wie der code geht".

Der Gedanke mit dem seperaten Header ist der, dass der User auch eine dedizierte Seite weitergeleitet wird. wenn ich den ersten Header nutzen würde, dann würde der User ja auf die Login-Seite umgeleitet wenn er kein Recht hätte.
 
"Ich weißt wie es funktionieren soll, aber weiß nicht wie der code geht".

Wenn das so ist male es auf ;) Dann siehst du den Code. Sowas könnte ein Struktogramm bzw. Nassi-Schneider-Diagram sein: http://www.strukted.de/download/strukted.zip

Deine drei Kategorien gibt es bereits bei Unix :p dort hat man das ganz geschickt über ein "binäres Rechtesystem" gelöst (siehe Google) und hier im Forum gibt es ebenfalls Themen und sogar fertige Klassen.
 
Zuletzt bearbeitet:
Zurück