Ik ben nu aan de gang met een rechtensysteem, maar ik zit nu vast.
Het is de bedoeling om de rechten op te slaan in een getal, en om dat dan te converteren naar binair, en daar vervolgens per 1 of 0 kijken welke rechten daarbij horen. Dit lijkt omslachtig, maar het levert ons een cleanere database op, en daar gaat het ons om.
Nu heb ik de volgende rechten en bijbehorende waarden:
Rechten
Omschrijving Waarde
Can_read_user 1
Can_create_user 2
Can_modify_user 4
Can_delete_user 8
Can_read_performance 16
Can_create_performance 32
Can_modify_performance 64
Can_delete_performance 128
Can_join_performance 256
Can_read_research_question 512
Can_create_research_question 1024
Can_modify_research_question 2048
Can_delete_research_question 4096
Can_join_research_question 8192
Voorbeeld
Een Leerling mag wel prestaties bekijken en zich er voor aanmelden, hetzelfde met onderzoeksvragen. De gebruiker mag verder niks met andere gebruikers doen.
Can_read_performance = 16
Can_join_performance = 256
Can_read_research_question = 512
Can_join_research_question = 8192
Totaal = 8976
Oftewel Binair:
10001100010000
Hoe kan ik nu via een functie berekenen welke rechten die persoon precies heeft? Ik gebruik nu decbin(), maar nu is dus het 'probleem' dat ik dan soms kleinere getallen krijg, denk aan 1101, moet ik er dan nullen voor gaan plakken? Ik gebruik trouwens PHP 4, dus str_split is geen optie.
Hoe zou ik dan ooit de binaire nummers door moeten lopen om de rechten te krijgen?
Ik zat zelf te denken om al die getallen in een array te zetten, maarja, aangezien ik dus geen str_split kan gebruiken heb ik geen idee hoe, en substr lijkt me weer iets te omslachtig.
Kan iemand van jullie hier een helder licht op schijnen? Nee, dit is geen code-request, ik heb gewoon een klein duwtje in de rug nodig, als ik het licht zie kan ik er wel naar toe lopen zegmaar ;o.
Het is de bedoeling om de rechten op te slaan in een getal, en om dat dan te converteren naar binair, en daar vervolgens per 1 of 0 kijken welke rechten daarbij horen. Dit lijkt omslachtig, maar het levert ons een cleanere database op, en daar gaat het ons om.
Nu heb ik de volgende rechten en bijbehorende waarden:
Rechten
Omschrijving Waarde
Can_read_user 1
Can_create_user 2
Can_modify_user 4
Can_delete_user 8
Can_read_performance 16
Can_create_performance 32
Can_modify_performance 64
Can_delete_performance 128
Can_join_performance 256
Can_read_research_question 512
Can_create_research_question 1024
Can_modify_research_question 2048
Can_delete_research_question 4096
Can_join_research_question 8192
Voorbeeld
Een Leerling mag wel prestaties bekijken en zich er voor aanmelden, hetzelfde met onderzoeksvragen. De gebruiker mag verder niks met andere gebruikers doen.
Can_read_performance = 16
Can_join_performance = 256
Can_read_research_question = 512
Can_join_research_question = 8192
Totaal = 8976
Oftewel Binair:
10001100010000
Hoe kan ik nu via een functie berekenen welke rechten die persoon precies heeft? Ik gebruik nu decbin(), maar nu is dus het 'probleem' dat ik dan soms kleinere getallen krijg, denk aan 1101, moet ik er dan nullen voor gaan plakken? Ik gebruik trouwens PHP 4, dus str_split is geen optie.
PHP:
1
2
3
4
5
6
7
8
| <?php function getRights ( $iRights ){ //Set the rights into a binary format. $iBinaryRights = decbin( $iRights ); } ?> |
Hoe zou ik dan ooit de binaire nummers door moeten lopen om de rechten te krijgen?
Ik zat zelf te denken om al die getallen in een array te zetten, maarja, aangezien ik dus geen str_split kan gebruiken heb ik geen idee hoe, en substr lijkt me weer iets te omslachtig.
Kan iemand van jullie hier een helder licht op schijnen? Nee, dit is geen code-request, ik heb gewoon een klein duwtje in de rug nodig, als ik het licht zie kan ik er wel naar toe lopen zegmaar ;o.