Torsten: Benutzerverwaltung mit PHP ?

Hallo zusammen!

Ich würde im Moment gerne auf einer Website eine Beuntzerverwaltung erstellen, die es mir ermöglicht mehreren usern unterschiedliche Rechte zu geben. Will heißen: Der user A sieht nur einige wenige Webseiten, der user B kann mehr ehen, während der user C veilleicht sogar administrator ist.

Dies alles sollte man noch über eine einfache Web-Oberfläche verwalten können.

Kann mir da jemand ein wenig auf die Sprünge helfen ?

Danke Danke Danke

Torsten

  1. hi!

    also du legst eben für jeden Benutzer einen Datenbankeintrag an mit einem bestimmten Schlüssel, der deinen Seiten sagt welche Rechte dein User hat...

    Abfragen welcher User eingeloggt ist geht über $PHP_AUTH_USER - via die HTTP - Authentifizierung ..

    mfg TOM

    1. hi!

      also du legst eben für jeden Benutzer einen Datenbankeintrag an mit einem bestimmten Schlüssel, der deinen Seiten sagt welche Rechte dein User hat...

      Ja das ist schon mal einfach, simpel, aber doch genial...DANKE

      Abfragen welcher User eingeloggt ist geht über $PHP_AUTH_USER - via die HTTP - Authentifizierung ..

      Dann kann ich aber meine user nicht per web-interface anlegen und verwalten, ...oder?

      Gruß
      Torsten

      1. hi nommal

        wie web-interface - was ist für dich ein web-interface?

        mfg TOM

        1. Hallali

          wie web-interface - was ist für dich ein web-interface?

          Also....wenn ich den user per htaccess authentifizieren lasse, dann muß ich den serverseitig anlegen, und per putty o.ä. auf der linux-shell den namen und das passwort anlegen.

          Ich will hier aber etwas für einfache user bsteln, die ein web-interface...ohhh das Böse Wort ;) ...also web-interface ist etwas, was auf html-basis in deinem browser läuft.

          Der user sollte also eine html(php)-Oberfläche sehen, die es ihm gestattet neue user anzulegen, passwörter zu bestimmen und die restriktionen zu verwalten - quasi alles über ein Menü.

          Die DB-einträge auf der Basis zu verwalten ist kein Problem, ...aber htaccess ...?

          Gruß
          Torsten

          1. hi..

            mhh versteh dich net ganz.. wenn du das mit dieser Http Auth abfragst bekommt der User ein Fenster gibt username / pwd ein und so lange er den Browser nicht schließt is das gespeichert.

            Erst wenn er den Browser schließt muss er es beim Neuaufruf neu eingeben.

            Mhh wie das geht dürfte wohl in Google zu finden sein...

            Grundsätzlich muss in der PHP - Datei GANZ oben sowas stehen:

            <?
            if (!isset($PHP_AUTH_USER)) {
                Header("WWW-Authenticate: Basic realm="digestweb"");
                Header("HTTP/1.0 401 Unauthorized");
                $msg = "Access denied!!!\n";
                echo $msg;
                exit;
            } else {

            //Jetzt holste dir da den Schlüssel ;-)

            }
            ?>

            mfg TOM

            1. Hallo mal wieder, Mr.Tom ;)

              mhh versteh dich net ganz.. wenn du das mit dieser Http Auth abfragst bekommt der User ein Fenster gibt username / pwd ein und so lange er den Browser nicht schließt is das gespeichert.

              Erst wenn er den Browser schließt muss er es beim Neuaufruf neu eingeben.

              Ja, da haben wir uns schon richtig verstanden - die Kiste nennt sich htaccess !
              ABER: Um die user anzulegen, muß ich am server rumfummeln und die usernamen sowie passwörter eintragen. Das war der Knackpunkt

              ...aber ich versuche mich jetzt einfach mal in Sessions reinzugraben - damit kann man das wohl ganz vorbildlich machen.

              Gruß
              Torsten

              1. Hallo Torsten,

                es gibt noch eine andere Möglichkeit. Du kannst Deine kompletten HTML-Seiten in einer MySQL-Datenbank speichern und dann über die Rechteverwaltung von MySQL den Seitenzugriff steuern.

                Da kannst Du durch Ausgliedern von Seiteninhalten in eine andere Tabelle sogar dafür sorgen, dass die Zugriffrechte bis auf Feldebene  (<input...>) skalierbar sind.

                Ist nur ne Idee. Mit einer Mini-Page habe ichs schon mal gemacht. Im großen Stil habe ichs aber noch nicht ausprobiert. Besonders weil ich erst seit Kurzem weiß, wie man da auch Bilder verwalten kann. Die müssen nicht in der MySQL-Datenbank liegen, aber in einm Verzeichnis außerhalb der Document-Root. Und dafür braucht man dann eben eine speziellen Anzeigefunktion.

                Grüßle

                Tom

            2. Moin!

              Grundsätzlich muss in der PHP - Datei GANZ oben sowas stehen:

              <?
              if (!isset($PHP_AUTH_USER)) {
                  Header("WWW-Authenticate: Basic realm="digestweb"");
                  Header("HTTP/1.0 401 Unauthorized");
                  $msg = "Access denied!!!\n";
                  echo $msg;
                  exit;
              } else {

              //Jetzt holste dir da den Schlüssel ;-)

              }
              ?>

              Anzumerken ist nur, daß deine Methode mit der CGI-Version von PHP nicht funktioniert. PHP muß als Apache-Modul laufen, damit es $PHP_AUTH_USER und $PHP_AUTH_PASSWD (oder wie die Variable auch immer heißt) kennt.

              Aber das ist kein Beinbruch: Die .htaccess-Datei verweist ja auf eine .htpasswd-Datei, die nur eine Textdatei ist, die man mit PHP auch ziemlich leicht bearbeiten kann.

              - Sven Rautenberg

  2. Hallo Torsten,
    du koenntest folgendermassen vorgehen (MySQL vorausgesetzt):
    1. Bau dir ein Formular, bei der du Name, Passwort und Rechte eintragen kannst (die Rechte z.B. ueber ein Dropdown).

    2. Diese Werte ueber PHP in deine Tabelle der MySQL Datenbank eintragen

    3. Beim Login des Users ueberprueben, ob der ueberhaupt vorhanden ist und falls ja, die vorhandenen Rechte auslesen.

    4. Session Id anlegen (geht bei PHP4 sehr einfach ueber "session_start()"). Und dann eine Session Variable ueber "session_register('deine_variable')" registrieren, die deine Rechte enthaelt. Koennte z.B. so aussehen:

    <?php
    session_start();
    session_register('deine_variable');
    $deine_variable = "darf_alles" //die Rechte deines Users eintragen

    //wenn dein User auf diese Seite darf, denn ab hier deine Daten anzeigen

    ......
    ?>

    5. Ueberpruefen der Werte, wenn eine Seite aufgerufen wird:
    <?php
     session_start();
    /*hier wird geguckt, ob schon eine Session angelegt ist. Wenn nicht, wird eine eroeffnet*/

    if(!session_is_registered('deine_variable') || $deine_variable != "darf_alles"){
    /*hier gucken, ob die SessionVariable, die z.B. ueber "GET" reingericht wurde ueberhaupt eine registrierte Session ist und ob der User die Berechtigung hat, die Seite anzusehen*/

    header("Location: fehler.html");
    /*falls nicht, wird er rausgeschmissen*/

    }else{
      daten auslesen oder was auch immer
    /*falls doch, daten anzeigen*/
    }
    ?>

    Das kann man natuerlich beliebig aufbohren (Passwoerter verschluesseln usw.).
    Vorteil des ganzen ist z.B., dass die ganze Geschichte auch ohne Cookies funzt.

    Wenn du darueber mehr wissen willst, gucke hier:
    http://www.develnet.org/
    Dann unter tutorials/sessions mit PHP (oder so aehnlich)

    Gruesse
    Ralf