login  Naam:   Wachtwoord: 
Registreer je!
Scripts > PHP > Navigatie systemen > Menu met levels


Reacties op het script Menu met levels

Offline  Thomas
Gepost op: 08 mei 2006 - 09:50
Moderator



Ziet er goed uit, maar wellicht dat e.e.a. eenvoudiger kan als je het als volgt aanpakt:

Stel dat je voor de levels van verschillende gebruikers een getal gebruikt, dat een macht van 2 is:

1 = Lid
2 = Medewerker
4 = Admin
8 = Super-Admin
16 = Co-Beheerder
32 = Beheerder

(en level 0 zou je speciaal kunnen maken - bijv. dat dat ook aangeeft dat een link voor iedereen zichtbaar is)

Dan kun je bij elke link in één keer aangeven wie deze te zien krijgt, door de som van de levels te nemen van de gebruikers die deze link mogen zien. Omdat de levels machten van 2 zijn, zal deze som niet "overlappen".

Stel dat je een menu-item hebt, dat alleen door co-beheerders en beheerders bekeken mag worden, dan pak je hiervoor 'view-level' 48 (16+32).

Je controleert of iemand een menu-item mag bekijken met de "binary comparator" & - Deze binaire operator is zeg maar een && op bit-niveau.

Voorbeeld:
  1. <?php
  2. if($view_level & $jouw_level)
  3. {
  4. // menu-item zichtbaar
  5. // ...
  6. } else
  7. {
  8. // menu-item niet zichtbaar
  9. // ...
  10. }
  11. ?>


Ook kunnen de if-statements korter. Alles van de vorm:
  1. if(<statement dat true of false oplevert>)
  2. {
  3. $some_var = true; // als het statement true opleverde
  4. } else
  5. {
  6. $some_var = false; // als het statement false opleverde
  7. }


kan herschreven worden naar:
  1. $some_var = <statement dat true of false oplevert>;

Offline  Rens
Gepost op: 08 mei 2006 - 12:10
Gouden medaille

Crew algemeen




Nu staan er 2 versies, de normale en de bitwise versie.
In allebei zitten nu die verkorte statements.

Offline  Richard
Gepost op: 08 mei 2006 - 14:32
Crew algemeen



Misschien zou je de verschillende levels in constanten kunnen verpakken. Dit is iets eenvoudiger als je bijvoorbeeld de getallen veranderd, of meer ranks toevoegt.

Offline  Rens
Gepost op: 08 mei 2006 - 15:40
Gouden medaille

Crew algemeen




Dat zou kunnen, maar dan moet je in het script een nieuwe constante aan maken.
Als je het zo doet hoeft dat niet.
Zo word gewoon gekeken of het gebruikerslevel in de string van 'level' voorkomt.
Je kunt dus levels blijven toevoegen, alleen moet je niet het levelNr veranderen.
Maar dat lijkt me ook nergens voor nodig...:?:

Offline  Ultimatum
Gepost op: 08 mei 2006 - 17:35
PHP expert



mooi en handig script

edit:

maar nu worden toch altijd de links geprint aangzien je SELECT * FROM menu doet selecteer hij alles maar hij moet toch alleen alleen de pagina's waar jij rechten tot hebt printen..

ook snap ik niet waarom je veld pagina in de tabel zet maar dat zal wel horen bij het voorbeeld 

Offline  Rens
Gepost op: 08 mei 2006 - 22:39
Gouden medaille

Crew algemeen




Nou, ik zal proberen het nog iets duidelijker uit te leggen.
Je haalt alles op uit de database, vervolgens kijkt het script (de functie) of je toegang hebt tot die pagina.
Dit word gedaan a.d.h.v. 'view' en 'level'.
De check:
  1. if(menuToegang($aFetch['level'], $aFetch['view'], $iLevel))
  2. {
  3. echo '<a href="'.$aFetch['pagina'].'">'.$aFetch['naam'].'</a><br />';
  4. }

Dus alleen als de functie 'true' opleverd word de link op het scherm gezet, anders niet.

Dat veld 'pagina' is inderdaad voor het voorbeeld.
Het voorbeeld is een dynamisch menu dat je via de database kunt bewerken.
Dan is het ook handig als je de pagina waar naartoe gelinkt moet worden kunt opgeven hè 

Zo beetje duidelijker?
Ga anders gewoon eens met het script 'spelen'.
Leer je altijd weer iets meer van dan alleen naar mijn vage uitleg te kijken 

Offline  qq123
Gepost op: 12 augustus 2006 - 17:15
Nieuw lid



ik hoby maar wat met php.
en ik vind dit wel een mooi systeemtje. maar ik snap niet hoe het werkt.
hoe je het toe past.
in het voorbeeld $iLevel elke werde geven maar er gebuirt niks met de links?!

kan niemand mij dit uitleggen?


Enkel aanvullende informatie, vragen en antwoorden op vragen zijn welkom.
 
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.087s