Ankündigung

Einklappen
Keine Ankündigung bisher.

rechte level script

Einklappen

Neue Werbung 2019

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

  • TeazY
    hat ein Thema erstellt rechte level script.

    rechte level script

    Servus ihr lieben,

    ich habe bisher ein user script geschrieben mit (registrierun, login etc.) wo alles funktioniert.

    Jetzt wollte ich dieses user-script um ein rechtelevel system erweitern. Das ganze sieht wie folgt aus:

    user_rights.sql
    PHP-Code:
    CREATE TABLE user_rights (
        
    ID INT AUTO_INCREMENT PRIMARY KEY,
        
    UserID TINYINT,
        
    Recht VARCHAR(30)
    ); 
    Zur erklärung:
    - ID: ist die Datensatz ID, wie immer halt.
    - UserID: ist die verknüpfung zum user aus der user sql tabelle (usersID = ID bei users.sql)
    - Recht: hier steht dann sowas wie "Admin", "News", "Tutorial" etc.

    Jedes moduil hat eine eigene rechtebezeichnung. Und für jedes recht gibt es einen datensatz. Sprich wenn user 1 mehrere rechte hat gibt es auch mehrere ´datensätze mi der userID=1.

    Deshalb ist es am sinnvollsten dachte ich die rechte per ID abzufragen.
    also wie immer zur db connecten und per select das ganze abfragen. dann das ganzem per whileshleife in variablen speichern.

    Das problem ist jetzt nur wie kann cih die rechte eines users nachdem ich sie aus der DB ausgelesen habe und per whilschleife in eine variable ($row['recht']) gespeichert habe seitenübergreifend nutzen? bzw. wo ist mein denkfehler, denn irgendwie will das gnaze nciht so funktionieren wie iche s will.

    P.S.: hab jetzt leider keinen code für die rechteanfrage zur hand da ich von vorne anfange wollte das rechtelevel zu schreiben. deshalb kann ich auch keienn code zur fehlerüberprüfung posten.

  • TeazY
    antwortet
    ich danke erstmal für die denkanstöße. ich muss das ganze wie gesgat nochmal überdenklen und überarbeiten. Danke trotzdem für die Hilfe.

    Einen Kommentar schreiben:


  • redheador
    antwortet
    Wieso schreibst du die Rechte nich einfach in ne $_SESSION Variable? Hat allerdings den Nachteil dass sich der User bei Rechte änderungen einmal aus und wieder einloggen müsste...

    Einen Kommentar schreiben:


  • Luigi
    antwortet
    naja die funktion erledigt das ja auch
    wenn du die früh genug einbindest dann ist sie auch script übergreifend und kann überall ausgeführt werden vom login bis zum logout

    hab auch nochn snippet gefunden wegen der binärenrechte verwaltung das ist eigentlich auch immer recht geil unter php

    PHP-Code:
    $user_recht <<0;
    $recht_news << 0// = Binär 1, Dezimal 1
    $recht_forum << 1// = Binär 10, Dezimal 2
    $recht_comments << 2// = Binär 100, Dezimal 4 

    // user darf news und coments, nicht forum...
    $user_recht $user_recht $recht_news;
    $user_recht $user_recht $recht_comments;

    //recht prüfen :
    if($user_recht $recht_forum) {
        echo 
    "ja";    
    } else {
        echo 
    "nein";    

    Einen Kommentar schreiben:


  • TeazY
    antwortet
    also ich werd mir mal das rechtsystem von vorne neu überlegen. Das ganze in eine funktion zu schrieben ist sicher die beste lösung. Mien hauptziel ist jedcoh das die rechte eines users beim login überprüft werden und für die dauer des besuches der seite verfügbar sind. also eigentlich stink normales rechtlevel ab login bis logout verfügbar, halt seitenübergreifend. Mal sehen wohin mich das führt.

    Einen Kommentar schreiben:


  • Luigi
    antwortet
    ja naja kommt drauf an man muss ja nicht für jedes modul 3 spalten anlegen sondern könnte nen binäres rechte system verwalten
    quasi
    jede funktion hat ne eigene zahl 1 2 4

    1 hinzufügen
    2 löschen
    4 editieren
    dann kann man in die spalte das jeweilige rechtelevel eintragen z.b.

    news 7
    dann hat der benutzer 1+2+4 also alle rechte
    und

    artikel 3 also kann er 1+2 löschen und hinzufügen

    naja is nurn gedanken anstoß aber in die richtung kannste das fortsetzen

    du kannst dann auch wieder nur ein feld nehmen für alle rechte
    und jedem recht eine binäre zahl zuordnen....

    Einen Kommentar schreiben:


  • TeazY
    antwortet
    deine version würde zu viele tabellen erfordern. für jedes modul immer post/edit/delet also 3 spalten pro modul. und das dann für jeden user der mehrere rechte hat dann. wenn ich das richtig verstanden habe xD

    Einen Kommentar schreiben:


  • Luigi
    antwortet
    mach dir doch einfach eine Funktion die das Rechte überprüfen für dich in die hand nimmt....

    PHP-Code:
    function userRights($user,$right) {
    // du holst via qry alle Rechte des users $user
    if($rights[$right] == "1"// vorrausgesetzt die rechte des users wurden alle in rights gespeichert...
    return true;
    else
    return 
    false;

    im späteren verlauf kannst du dann eifnach auf deine funktion zurückgreifen

    PHP-Code:
    if(userRights(USER"newsPosten")){
    // zugriff zum news posten
    } else {
    echo 
    "ERROR";
    exit;

    naja vll hats ja für nen denkanstoß gereicht ^^

    oh ich glaub ich hab was verwechselt ich dachte Recht wäre nur ein Bool feld und das du dann für jedes modul ne neue Bool spalte anlegst so würde die funktion das nämlich im moment verarbeiten aber wenn du nur ein recht in der Tabelle stehen hast musst du natürlich dementsprechnend anders auswerten

    ich dachte viel mehr an so eine Rechte verwaltung

    PHP-Code:
    CREATE TABLE user_rights (
        
    ID INT AUTO_INCREMENT PRIMARY KEY,
        
    UserID TINYINT,
        
    newsPosten INT(1NOT NULL,
        
    newsEditieren INT(1NOT NULL,
        
    newsLöschen INT(1NOT NULL
    ); 
    Somit könnte man die rechte individuell anpassen.

    z.b. ein user
    PHP-Code:
    INSERT INTO user_rights (`UserID`, `newsPosten`, `newsLöschen`, `newsEditieren`) VALUES ('11''1''1''0'); 
    sodass User 11 newsPosten und newsLöschen dürfte jedoch keine news bearbeiten, sei dahingestellt ob das so sinnvoll ist

    Einen Kommentar schreiben:

Lädt...
X