Voor een website ben ik een rechtensysteem aan het bedenken. Ik heb de volgende tabellen:
Weg 1
Ik vul bij het inloggen de array rechten, en bewaar deze in een sessie. De array wordt dan iets als
Weg 2
Met behulp van MySQL, als een pagina bezocht word:
Welke performed het best? Een database verbinding wordt op elke pagina sowieso gemaakt.
code:
Om te kijken of een lid toegang heeft tot een bepaald onderdeel kan ik twee wegen bewandelen:1
2
3
4
5
6
7
8
| CREATE TABLE `ledenrechten` (
`userid` int(11) NOT NULL default '0',
`rechtid` int(11) NOT NULL default '0'
)
CREATE TABLE `rechten` (
`id` int(11) NOT NULL default '0',
`naam` varchar(50)
) |
Weg 1
Ik vul bij het inloggen de array rechten, en bewaar deze in een sessie. De array wordt dan iets als
PHP:
Vervolgens kan ik op de pagina nieuws iets doen als1
| $rechten = array('nieuws_lezen', 'nieuws_schrijven', 'forum_lezen', '...etc, etc') |
PHP:
Voordeel is dat ik maar 1 keer een query op de database los hoef te laten. Nadeel is dat sommigen na verloop van tijd meer dan 30~40 rechten hebben, die allemaal in die array staan.1
2
3
4
5
| if (in_array('nieuws_schrijven', $rechten)) { // user mag schrijven }else { // user mag niet schrijven } |
Weg 2
Met behulp van MySQL, als een pagina bezocht word:
code:
en dan met mysql_numrows() kijken of er 1 record gevonden is. Als zo, dan kan user schrijven.1
2
3
4
5
| SELECT rechten.naam FROM ledenrechten, rechten WHERE rechten.id = ledenrechten.rechtid AND rechten.naam = 'nieuws_schrijven' AND userid = <<user die pagina bezoekt>> |
Welke performed het best? Een database verbinding wordt op elke pagina sowieso gemaakt.
[ Voor 6% gewijzigd door Verwijderd op 11-04-2005 18:44 ]