Userlevels, hoe?
Op het moment ben ik bezig met een klein CMS, nu probeer ik verschillende userlevels te maken, maar vraag me af hoe ik dat het beste kan doen via sessions of via iets anders?
Mvg,
Jeroen
Via database, denk ik
users
-------
uid
naam
level
levels
-------
lid
omschrijving
In de levels tabel kun je vervolgens ook alle restricties opnemen zoals bijvoorbeeld het posten/wijzigen/verwijderen van berichten, aanmaken van accounts etc. En in de users tabel kun je elke user een bepaald level toekennen...
Dank je Blanche, kzal het gelijk proberen!
Een tabel met users, een tabel met rechten, en een tabel waarin je user_id's aan rechten_id's koppelt, een zogenaamde koppeltabel.
De relatie gebruikers <-> rechten is immers een veel op veel relatie. Een gebruiker kan meer dan één recht hebben, en een recht kan aan meer dan één gebruiker toegekend worden.
Wat ik nu heb:
+ USERS
user_id int(5) auto_increment,
user_ip int(30) NOT NULL,
user_name varchar(50) NOT NULL,
user_pass varchar(20) NOT NULL,
user_level int(3) NOT NULL,
+ USERLEVELS
level_id int(6) NOT NULL,
level_dis varchar(60) NOT NULL,
Mvg,
Jeroen
De userlevels tabel kun je er wel in houden, maar dan echt alleen om de groepen in op te slaan waarin een gebruiker kan zitten. Hier komen verder geen rechten in te staan. Je krijgt dan twee nieuwe tabellen erbij:
rechten
---------
id
omschrijving
users-rechten
-------------------
id
user_id
recht_id
De laatste is in dit geval de koppeltabel.
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
maak een tabel status aan dan kan je zo veel statusen maken als je wilt
opzich naar mijn mening heb je maar 1 tabel nodig om de user status te krijgen als je via database werkt
natuurlijk check je via het inloggen en ip nummer en zo
maar daar heb je maar 1 tabel voor nodig
bij mijn heet ie status
Greets MaDHouSe
dit is de userstatus van mijn members
ik gebruik er dus 3
Webmaster
Moderator
Member
en ik check het zo
connect via database opvragen (als member ingelogt is) checken welke status hij heeft
if($status == 'Webmaster') { code }
if($status == 'Moderator') { code }
if($status == 'Member') { code }
en vervolgens de rest van je code
het ziet er misschien niet pro uit maar het idee werkt perfect en is niet moeilijk
maak een tabel status aan dan kan je zo veel statusen maken als je wilt
opzich naar mijn mening heb je maar 1 tabel nodig om de user status te krijgen als je via database werkt
natuurlijk check je via het inloggen en ip nummer en zo
maar daar heb je maar 1 tabel voor nodig
bij mijn heet ie status
Greets MaDHouSe
dit is de userstatus van mijn members
ik gebruik er dus 3
Webmaster
Moderator
Member
en ik check het zo
connect via database opvragen (als member ingelogt is) checken welke status hij heeft
if($status == 'Webmaster') { code }
if($status == 'Moderator') { code }
if($status == 'Member') { code }
en vervolgens de rest van je code
het ziet er misschien niet pro uit maar het idee werkt perfect en is niet moeilijk
SORRY nog maals!
Maareh, ontopic, ik zou het doen zoals Jan het zegt, dat is het beste.
Jan Koehoorn schreef op 18.12.2006 22:42:
... een zogenaamde koppeltabel...
Hoe koppel je die dan aan elkaar?
En hoe ken je dan je leden de juiste levels toe?
Adios!
Jens
Jan Koehoorn schreef op 18.12.2006 22:42:
Persoonlijk zou ik geen gebruikers rechten geven, maar groepen. Dit is namelijk veel overzichtelijker en makkelijker te onderhouden.Als je het iets geavanceerder aan wilt pakken maak je drie tabellen.
Een tabel met users, een tabel met rechten, en een tabel waarin je user_id's aan rechten_id's koppelt, een zogenaamde koppeltabel.
De relatie gebruikers <-> rechten is immers een veel op veel relatie. Een gebruiker kan meer dan één recht hebben, en een recht kan aan meer dan één gebruiker toegekend worden.
Een tabel met users, een tabel met rechten, en een tabel waarin je user_id's aan rechten_id's koppelt, een zogenaamde koppeltabel.
De relatie gebruikers <-> rechten is immers een veel op veel relatie. Een gebruiker kan meer dan één recht hebben, en een recht kan aan meer dan één gebruiker toegekend worden.
In dit geval gaat het volgens de TS om een klein CMS, maar stel, je hebt een CMS als Tweakers.net of Fok.nl (ik weet niet precies hoe die het geregeld hebben, maar goed).
In die CMS'en heb je zoveel verschillende rechten dat je niet per gebruiker wilt aangeven wat hij/zij allemaal mag of niet mag als die een bepaalde taak op de site moet uitvoeren. Dat werk wil je maar een keer doen en maak je dus een groep met de rechten. Vervolgens gooi je iedereen met die taken in de groep.
Heb je een jaar later nog iemand die die specifieke taken moet doen hoef je niet eerst uit te zoeken welke rechten de anderen hebben en die stuk voor stuk aan de gebruiker toekennen, maar je gooit de nieuwe medewerker gewoon in de groep.
Het is op programmeerniveau iets meer werk om met groepen te werken, maar voor het beheer werkt het veel gemakkelijker. Een voorbeeld (niet PHP) is bijvoorbeeld een Windows-domein: domain admin, back-up admin, user admin, user, remote workplace user. En een voorbeeld mét PHP... ik denk phphulp.nl?
Elwin
[Edit: Typo]
Gewijzigd op 01/01/1970 01:00:00 door Elwin - Fratsloos
users
groepen
- koppeltabel groepen-rechten
rechten
- kopeltabel rechten-afhankelijkheden
afhankelijkheden
Wil je dit soort zaken goed opslaan in de database, dan zul je met foreignkey's aan de slag moeten. In het geval van MySQL betekent dit dat je innoDB moet gebruiken, de standaard engine MyISAM kent geen foreignkey's... (hoe verzinnen ze het!)