Ik ben bezig met een rechtensysteem, waar er af en toe nieuwe rechten bij zouden kunnen komen. Ik heb een tabel met daarin alle gebruikers, en in deze tabel zit een kolom die 'grants' heet.
Met het volgende scriptje krijg je als waarde 'false' op je scherm. Dit is ook de bedoeling.
Nu wil ik voor mijn rechtensysteem hetzelfde. Ik werk met een session, waarin de usergegevens in worden geladen, dus ook de rechten (grants). Hier komen alle waarden ook netjes in. Deze session heet in mijn geval $_SESSION["USERDATA"]. De gebruikersrechten staan in de session $_SESSION["USERGRANTS"]. Dit werkt ook allemaal prima.
Stel je voor dat ik de volgende dingen als rechten heb:
news_post
news_edit
news_delete
In een normale array, zou je dan het volgende hebben:
Ik heb in de MySQL cel 'grants' het volgende gezet:
De cel 'grants' komt dus in de session $_SESSION["USERGRANTS"] te staan, d.m.v. het volgende:
De waarden moeten dan aan te roepen zijn d.m.v. $_SESSION["USERGRANTS"]["news_post"], $_SESSION["USERGRANTS"]["news_edit"] en $_SESSION["USERGRANTS"]["news_delete"]. Wit werkt helaas niet. Heb al gezocht op o.a. Google, PHP.net en GoT, maar heb niks kunnen vinden wat me van mijn probleem afhelpt.
Als ik dan $_SESSION["USERGRANTS"][0] aanroep, dan krijg ik daar het volgende te zien:
'news_post' => 'true', 'news_edit' => 'true', 'news_delete' => 'false'
Heb het al op verschillende manieren geprobeerd, maar geen van de volgende mogelijkheden werkt:
en
Als ik deze laatste gebruik, en dan aanroep met bijv. $_SESSION["USERGRANTS"][2], dan krijg ik daar als waarde ['news_delete'] => 'true'. Dit is dus ook niet de bedoeling.
Ik hoop dat jullie mijn verhaal hierboven een beetje snappen, en dat jullie met een oplossing komen
Mocht het niet duidelijk zijn, meld het dan even
Met het volgende scriptje krijg je als waarde 'false' op je scherm. Dit is ook de bedoeling.
PHP:
1
2
3
4
5
6
7
8
| <?php $rights = array('right1' => 'true', 'right2' => 'false', 'right3' => 'true', 'right4' => 'true'); echo $rights["right2"]; ?> |
Nu wil ik voor mijn rechtensysteem hetzelfde. Ik werk met een session, waarin de usergegevens in worden geladen, dus ook de rechten (grants). Hier komen alle waarden ook netjes in. Deze session heet in mijn geval $_SESSION["USERDATA"]. De gebruikersrechten staan in de session $_SESSION["USERGRANTS"]. Dit werkt ook allemaal prima.
Stel je voor dat ik de volgende dingen als rechten heb:
news_post
news_edit
news_delete
In een normale array, zou je dan het volgende hebben:
PHP:
1
2
3
4
5
| <?php array('news_post' => 'true', 'news_edit' => 'true', 'news_delete' => 'false'); ?> |
Ik heb in de MySQL cel 'grants' het volgende gezet:
code:
1
2
3
| 'news_post' => 'true', 'news_edit' => 'true', 'news_delete' => 'false' |
De cel 'grants' komt dus in de session $_SESSION["USERGRANTS"] te staan, d.m.v. het volgende:
PHP:
1
2
3
4
5
6
7
8
9
10
| <?php /* Inhoud van $_SESSION["USERDATA"]->grants ['news_post'] => 'true', ['news_edit'] => 'false', ['news_delete'] => 'true' */ $_SESSION["USERGRANTS"] = array($_SESSION["USERDATA"]->grants); ?> |
De waarden moeten dan aan te roepen zijn d.m.v. $_SESSION["USERGRANTS"]["news_post"], $_SESSION["USERGRANTS"]["news_edit"] en $_SESSION["USERGRANTS"]["news_delete"]. Wit werkt helaas niet. Heb al gezocht op o.a. Google, PHP.net en GoT, maar heb niks kunnen vinden wat me van mijn probleem afhelpt.
Als ik dan $_SESSION["USERGRANTS"][0] aanroep, dan krijg ik daar het volgende te zien:
'news_post' => 'true', 'news_edit' => 'true', 'news_delete' => 'false'
Heb het al op verschillende manieren geprobeerd, maar geen van de volgende mogelijkheden werkt:
PHP:
1
2
3
4
5
6
7
8
9
10
| <?php /* Inhoud van $_SESSION["USERDATA"]->grants ['news_post'] => 'true', ['news_edit'] => 'false', ['news_delete'] => 'true' */ $_SESSION["USERGRANTS"] = implode(array($_SESSION["USERDATA"]->grants)); ?> |
en
PHP:
1
2
3
4
5
6
7
8
9
10
| <?php /* Inhoud van $_SESSION["USERDATA"]->grants ['news_post'] => 'true', ['news_edit'] => 'false', ['news_delete'] => 'true' */ $_SESSION["USERGRANTS"] = explode(",", implode(array($_SESSION["USERDATA"]->grants))); ?> |
Als ik deze laatste gebruik, en dan aanroep met bijv. $_SESSION["USERGRANTS"][2], dan krijg ik daar als waarde ['news_delete'] => 'true'. Dit is dus ook niet de bedoeling.
Ik hoop dat jullie mijn verhaal hierboven een beetje snappen, en dat jullie met een oplossing komen
[ Voor 21% gewijzigd door f.grijze op 05-04-2005 14:41 ]