[PHP] Abfragen (SQL) / Sessions



  • Hallo,

    habe zwei Probleme.

    1) Sessions
    Ich gehe auf meine index.php und logge mich dort per Nickname und Passwort ein. Diese beiden Variablen übergebe ich per Sessions auf die nachfolgende Seite mit:

    <?php
    	session_start();
    	$_SESSION["name"] = $_POST['name'];
    	$_SESSION["pw"] = $_POST['passwort'];
    ?>
    

    So, kein Problem. Die Sessionvariablen werden somit registriert. Aber nun habe ich folgendes Problem. Auf einer Folgeseite werden die Variablen wieder übergeben. Funktioniert auch, aber auf der Folgeseite gibt es einen "Zurück" - Link. Dieser Link verweist wieder auf die 1. o.g. Seite.
    Da aber dort die Variablen mit dem $_POST - Verfahren registriert werden, wird die Sessionvariable natürlich neu registriert. Nur leider wird diesmal nichts per $_POST übertragen und somit erscheint "Kein Zugriff".

    2) Abfragen (SQL)
    Ich habe eine MySQL - Datenbank.
    In dieser Datenbank gibt es folgende Tabellen, die für mein Problem relevant sind.
    gruppenliste
    gruppe_zugriff
    zugriffsrechte

    gruppenliste
    Dort steht drin:
    - 1 | Administrator
    - 2 | Moderator
    - 3 | Gast

    zugriffsrechte
    Dort steht drin:
    - 1 | Schreiben
    - 2 | Lesen

    gruppe_zugriff
    Dort steht drin:
    - 1 | 1
    - 1 | 2
    - 2 | 1
    - 2 | 2

    Also auf gut Deutsch gesagt:
    - Administrator darf Schreiben und Lesen
    - Moderator darf Schreiben und Lesen
    - Gast darf gar nichts

    Meine SQL - Abfrage lautet:

    SELECT t1.g_id, t1.g_name, t3.rechte FROM gruppenliste as t1 INNER JOIN gruppe_zugriff AS t2 ON t2.gruppenliste_g_id = t1.g_id INNER JOIN zugriffsrechte AS t3 on t2.Zugriffsrechte_ZID = t3.ZID") OR die(mysql_error());
    

    Leider gibt er es nun folgendermaßen aus:

    Administrator - Schreiben
    Administrator - Lesen
    Moderator - Schreiben
    Moderator - Lesen

    Ich möchte es aber gerne so haben:

    Administrator - Schreiben, Lesen
    Moderator - Schreiben, Lesen

    -----

    Vielen Dank schon einmal.

    Gruß,
    Thorsten



  • zu 1.

    frag doch einfach, ob etwas übergeben wurde, wenn ja, dann schreib es in die session.

    zu 2.

    Wieviele verschiedene Gruppen, Zugriffsrechte und Zugriffsgruppen gibt es denn, die eine Datenbank rechtfertigen?

    Zugriffsrechte kannst du mit Bitwerten realisieren:

    0x01 => Lesen
    0x02 => Schreiben
    0x04 => Beitrag löschen
    0x08 => User löschen
    0x10 => Forum löschen
    
    Admin     = 0x01 | 0x02 | 0x04 | 0x08 | 0x10
    Moderator = 0x01 | 0x02 | 0x04
    User      = 0x01 | 0x02
    Gast      = 0x01
    
    $UserInfo   = HoleBenutzerInfoAusDB($Username);
    $UserRights = $UserInfo["AccessRights"];
    
    // Benutzer darf schreiben
    if (($UserRights & 0x02) == 0x02)
    {
      //...
    }
    


  • erm isset($_SESSION["nick"])
    dann nicht mehr setten sonst schon fertig 🙂
    außerdem solltest sowieso error ausgeben:

    if(trim($_POST["nick"])=="")
    echo "nick eingeben";
    //noch mit dem pw
    

    mfg tobZel



  • Ahh, vielen Dank.
    Doch ja, nun habe ich es verstanden, auch mit den Zugriffsrechten.

    Gruß,
    Thorsten


Log in to reply