Ankündigung

Einklappen
Keine Ankündigung bisher.

Rechteverwaltung mit PHP/MySQL realisieren...wie?

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Rechteverwaltung mit PHP/MySQL realisieren...wie?

    Hallo,

    eigentlich habe ich nur eine kurze Frage, zu einem etwas größeren Thema. Unzwar möchte ich eine Datenbank erstellen, die über PHP zu erreichen ist (sprich das gewöhnliche, wie Formulare, Listings, etc.). Dabei sollen aber bestimmte Benutzer nur auf bestimmte Bereiche zugreifen können und nur bestimmte Rechte zugewiesen bekommen.

    Meine Frage dazu ist. Über welche Funktionen sollte ich mich vorweg schlau machen und gibt es eventuell gute Manuals oder Doku, die dieses Thema mitunter anschneiden?

    Meine Kenntnisse umfassen bisher simple Formulare und deren Bearbeitung in den Datenbank (hinzufügen, ändern, löschen) oder eben Dateiuploads. Der Rest ist eher Kleckerkram oder eher nur angeschnitten.

    Vorweg schonmal ein großes Danke.
    [url]http://www.schwarzerton.de[/url].


  • #2
    Wenn du die Rechteverwaltung intern in MySQL meinst, dann sollest du dir da mal GRANT anschauen. Wenn du die Rechteverwaltung auf PHP Basis (also wer darf dieses Formular sehen?) dann sind dies einfache if-Anweisungen in denen du Prüfst, ob der Benutzer Rechte hat. Dafür solltest du die Rechte in einer geeigneten Form, die auch erweiterbar ist, speichern.

    Kommentar


    • #3
      Mhhh...if-Anweisungen. Wie kann ich mir das vorstellen bei PHP und Rechten!?! Eine externe (und require(te)) PHP-Datei in denen die Rechte verfasst sind?

      Wenn ja, wie soll ich das anstellen? Ich mein, die Sache mit der Datenbank hab ich soweit begriffen, das dort halt dementsprechend die Rechte auf spezielle Tabellen gesetzt werden und dort auch noch explizit die Lese-/Schreibzugriffe geregelt werden. Aber meine Vorstellung ist ziemlich kompliziert und sehr ungenau, deshalb frag ich hier ja nach.

      Da muss ich sicherlich die Sessions benutzen, um da eine gescheite Form eines Logins zu gestalten, oder? Und dann per IF abfragen bspw.:

      IF (benutzer=$gruppe_a){
      ...und dann entsprechend die Seite/Funktion ausführen...
      }

      In der seperaten PHP Datei stell ich mir das so vor, dass man eventuell Gruppen erstellt (arrays) und in diesen die Benutzer speichert. Auf der Website wird dann eben dieser Array aufgerufen, um festzustellen, ob der angemeldete Benutzer nun aus der berechtigten Gruppe ist oder nicht.
      [url]http://www.schwarzerton.de[/url].

      Kommentar


      • #4
        Sagen wir mal du hast eine Datenbank in der eine Tabelle names user existiert.
        So nun hast du in dieser Tabelle folgende Attribute:
        - Vorname
        - Nachname
        - Nickname
        - E-Mail
        ...
        - Benutzergruppe

        Jetzt hast du sagen wir mal zwei Benutzergruppen (ganz simpel halt ^^), einmal die Admins und die User.
        Dann sagst du einfach, wenn es ein Admin ist, steht in Benutzergruppe eine '1', wenns ein User ist, eine '2'.

        Jetzt hast du deinen "gesicherten" Bereich wo nur die Admins zu tritt haben. Dann überprüfst du einfach anhand des Nicknames, ob der eingeloggte User ein Admin oder User ist. Z.B:

        PHP-Code:
        <?php

        if (!isset$_SESSION["nickname"]) {
         
         echo 
        "Bitte erst einloggen!";

        } else {
         
         
        $nick $_SESSION["nickname"];
         
        $sql "SELECT benutzergruppe FROM user WHERE nickname = '$nick'";
         
        $abfrage mysql_query($sql);
         
        $row mysql_fetch_assoc($abfrage);
         
         if (
        $row["benutzergruppe"] == "1") {
          include 
        "adminbereich.php";
         } else {
          echo 
        "Kein Zutritt";
         }
        }
        ?>

        Kommentar


        • #5
          http://www.developers-guide.net/foru...ysql#post40189
          Dort wurde das Thema auch gerade behandelt. Dort wird etwas mehr auf den dynamischen Aspekt eingegangen.

          Da ich nicht weiß, wie weit deine PHPKenntnisse sind, sollte dir als anschauliches Beispiel eigentlich auch das von <Daniel> reichen.
          [url=http://www.developers-guide.net]Developers-Guide.net[/url]
          [url=http://www.warrenfaith.de]Senseless[/url]

          Kommentar


          • #6
            Trotz des im verlinkten Thread genannten Nachteils finde ich persönlich die Methode mit bitweiser Vergabe von Rechten ziemlich gut- muß man sich halt vorher gut Gedanken machen über die umzusetzenden Nutzerkreise:
            Jeder zu realisierende Nutzerbereich enthält eine Stufe einer Reihe von Bits z.B.
            1 angemeldet
            2 Autor
            3 Moderator
            4 Superuser
            5 Admin

            Es ergibt sich z.B. 00111 = (int) 7 was in der Datenbank abgelegt dem Status des Moderators entspricht (einschließlich der Reche von User und Autor).
            Zu schützende Bereiche bekommen ebenso eine Nummer z.B. 11000 = (int) 24, was bedeutet daß nur User mit den hochwertigen Bits 4 und 5 den Bereich aufrufen dürfen. Das Gute ist nun, daß ein Binär-Und schon während der DB Abfrage
            'SELECT [...] Username , IF(UserStatus & 24 > 0,'Y','N') AS Permitted[...]' so ein Zugriffs-OK ausspucken kann. Ohne viel Schnickschnack.
            Und ich kann z.B. soweit gehen, daß Personen Moderator, aber nicht Autoren sein dürfen u.ä.
            Den Admin Account habe ich übrigens implizit gelöst, d.h. jeder Bereich erhält automatisch das entspr. Bit des Admins durch Addition (hier + 16), so gibts keine Bereiche, die den Admin ausschließen.
            --

            „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
            Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


            --

            Kommentar

            Lädt...
            X