Mehrere Login Scripts Paralel, aber verschiedene Zugriffsebenen

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

  • Mehrere Login Scripts Paralel, aber verschiedene Zugriffsebenen

    Hi, ich habe folgendes Login Script gefunden / gebastelt:

    PHP-Code:
    <?php 
    include ("../includes/db_config.php");
    // Session starten
    session_start ();

    // Datenbankverbindung aufbauen 
    $connectionid  mysql_connect ($hostname$username$password); 
    if (!
    mysql_select_db ($dbname$connectionid))  

      die (
    "Keine Verbindung zur Datenbank"); 


    $sql "SELECT "
        
    "Id, Nickname, Nachname, Vorname, email, gender "
      
    "FROM "
        
    "beta "
      
    "WHERE "
        
    "(Nickname like '".$_REQUEST["username"]."') AND "
        
    "(Kennwort = '".md5 ($_REQUEST["password"])."')"
    $result mysql_query ($sql); 

    if (
    mysql_num_rows ($result) > 0

      
    // Benutzerdaten in ein Array auslesen. 
      
    $data mysql_fetch_array ($result); 

      
    // Sessionvariablen erstellen und registrieren 
      
    $_SESSION["user_id"] = $data["Id"]; 
      
    $_SESSION["user_nickname"] = $data["Nickname"]; 
      
    $_SESSION["user_nachname"] = $data["Nachname"]; 
      
    $_SESSION["user_vorname"] = $data["Vorname"]; 
      
    $_SESSION["user_email"] = $data["email"]; 
      
    $_SESSION["user_gender"] = $data["gender"]; 
      
    $_SESSION["user_birthday"] = $data["birthday"]; 

      
    header ("Location: index.php"); 

    else 

      
    header ("Location: index.php?fehler=1"); 

    ?>
    Jetzt möchte ich aber ein Bereich für normale Benutzer, einen für Premium benutzer und ein Admin Bereich erstellen. Nur wenn man im normalen Bereich eingelogt ist, hat man (was ja auch logisch ist) auch Zugriff auf den Admin Bereich. Das soll aber nciht so sein. Im moment Benutzen alle Bereiche verschiedene Tabellen. Ich möchte aber eigendlich zum Schluss eine Tabelle mit verschiedenen Zugriffsebenen haben. ich weis nur nicht wie ich den Script erweitern kann. Vlt

    [php]
    if (!$_SESSION["user_birthday"] = admin) {
    // Weiterleitung auf eine fehlerseite
    }
    [PHP]

    Oder fällt jemanden etwas besseres ein?

    Micronax

  • #2
    Ansätze gibt es viele, auf der Komplexitätsskala nach oben offen - der für Deinen Fall vielleicht einfachste wäre, die Benutzertabelle um eine Spalte "rechte" zu erweitern und dort zu hinterlegen, auf welchem Level der Benutzer rangiert - etwa 1 für einfache Benutzer, 2 für privilegierte, 3 für Admins. Auf jeder Seite wird dann der Level des eingeloggten Benutzers geprüft - ist er zu niedrig für die ausgewählte Seite, kriegt er eine Fehlermeldung zu sehen.

    Kommentar


    • #3
      Bin grad dabei :P

      Micronax

      Kommentar


      • #4
        Mi fällt grad auf, oben sollte nicht user_birthday sonder user_level stehen =)

        Ach und ich hab noch ein prob mit den Vergleichsoperatoren nähmlich:

        PHP-Code:
        // Rechte überprüfen
        if ($_SESSION["user_rights"] >= "1") {
          
        header ("Location: index.php?nopermission"); 
        }; 
        Nur der Wert in der DB zu $_SESSION["user_rights"] steht auf "1" nur der Benutzer kommt nicht auf die Seite. steht er auf 0 kommt er drauf und steht er auf 2 geht es auch nicht.

        Das PHP-Manual sagt:

        $a >= $b Größer Gleich Gibt TRUE zurück, wenn $a größer oder gleich $b ist.

        Was mache ich falsch?

        Micronax

        Kommentar


        • #5
          "1" ist ein string
          1 ist eine zahl

          ordnungsverhältnisse auf reelen / ganzen zahlen sind allgemein bekannt. was willst du mit dem string?

          Kommentar


          • #6
            oh.. also die "" entfernen?

            Micronax

            Kommentar


            • #7
              erst mal überlegen, was passiert: ist in der db eine zahl oder ein string gespeichert? wie steht's um $_SESSION["user_rights"]? ist intval() evtl. angebracht?

              Kommentar


              • #8
                zum einen dass und grundschulmathematik lernen!

                dein code:

                if(userrang KLEINER GLEICH 1)
                -> keine Berechtigung.

                Soll heißen, nur wenn ich kein User bin, bzw. gar keine Rechte habe, darf ich auf die Seite? Denk doch bitte mal ne sekunde logisch nach.

                Kommentar


                • #9
                  Falsch

                  ich habe Größer Gleich benutzt also >=

                  Micronax

                  Kommentar


                  • #10
                    $_SESSION["user_rights"] wird beim Login erstellt und gibt den Wert in der DB an (was du ja warscheinlich sowiso weist) hehe...

                    In der DB is rights ein char(1) liegt das daran?

                    Und wie schon in anderen Threads gesagt: Ich bin noch ein absolute beginner.

                    Micronax

                    Kommentar


                    • #11
                      In der DB is rights ein char(1) liegt das daran?
                      wozu char, wenn du doch eine zahl speicherst? unsigned tinyint hätte es auch getan, nur mit dem unterschied, dass du eine zahl wie eine zahl speicherst.
                      Und wie schon in anderen Threads gesagt: Ich bin noch ein absolute beginner
                      versteck dich nicht hinter leeren sprüchen.

                      Kommentar


                      • #12
                        versteck dich nicht hinter leeren sprüchen.
                        Das heißt?

                        wozu char, wenn du doch eine zahl speicherst? unsigned
                        tinyint hätte es auch getan, nur mit dem unterschied, dass du eine
                        zahl wie eine zahl speicherst.
                        ich habs jetzt als int gespeichert.

                        Kommentar


                        • #13
                          ich habs jetzt als int gespeichert.
                          was folgt daraus?

                          Kommentar


                          • #14
                            Das wenn in der DB 0 steht, ich auf die Seite komme, sonst nicht.
                            Aber so soll es doch ned sein..

                            Micronax

                            Kommentar


                            • #15
                              nein, in erster linie folgt jetzt daraus, dass $_SESSION["user_rights"] jetzt eine zahl ist. nun vergleiche eine zahl mit einer zahl.

                              Kommentar

                              Lädt...
                              X