64 is 2 tot de macht 6, zou dat toevallig zijn?
Link gekopieerd
Hmm, nog geen geniale inval hoor, ik vond het alleen toevallig.
Welke waardes kan $row['urID'] hebben? Wat zie je als je die waarde echoot in je while loop?
Link gekopieerd
G
Gerald
25-02-2006 21:31
gewijzigd op 25-02-2006 22:01
Jan Koehoorn schreef op 25.02.2006 21:27
Hmm, nog geen geniale inval hoor, ik vond het alleen toevallig.
Welke waardes kan $row['urID'] hebben? Wat zie je als je die waarde echoot in je while loop?
Ok ik dacht al moet ik hier de oplossing uithalen? :P
$row['urID'] = De rechten uit de rechten tabel dus 1,2,4,8,16,32
Als ik de bitwise functie echo krijg ik een rijtje:
echo ($result['urID'] & $row['urID']);
0
2
4
0
02
22
Link gekopieerd
Ja, maar zijn in beide gevallen dus maar zes waarden en daar kun je geen acht checkboxen mee vullen.
Link gekopieerd
Let op dat de bitwise-operators "echte" integers verwachten, ik heb al rare dingen meegemaakt doordat variabelen als variants / strings werden gezien.
Zelf controleer ik altijd op de volgende wijze:
<?php
if( $iBaseRights & $iModule === $iModule )
{
// Er zijn rechten
}
?>
Link gekopieerd
Remco van Arkelen schreef op 25.02.2006 22:06
Let op dat de bitwise-operators "echte" integers verwachten, ik heb al rare dingen meegemaakt doordat variabelen als variants / strings werden gezien.
Zelf controleer ik altijd op de volgende wijze:
<?php
if( $iBaseRights & $iModule === $iModule )
{
// Er zijn rechten
}
?>
Daar heb je een punt! Is even proberen..
En ik heb ook geen 8 checkboxjes?
Link gekopieerd
Misschien dat PHP die variabelen wel parsed als octale getallen, gezien het feit dat het bij 1 en 8 misgaat.
Link gekopieerd
Ik zou de rechtentabel uitbreiden met 64 en 128. Net even gekeken en dit:
<?php
echo 255 & 1;
echo '<br />';
echo 255 & 2;
echo '<br />';
echo 255 & 4;
echo '<br />';
echo 255 & 8;
echo '<br />';
echo 255 & 16;
echo '<br />';
echo 255 & 32;
echo '<br />';
echo 255 & 64;
echo '<br />';
echo 255 & 128;
?>
Levert dit op:
1
2
4
8
16
32
64
128
Stel dat iemand als recht nu 129 heeft, dan krijg je dit:
<?php
echo 129 & 1;
echo '<br />';
echo 129 & 2;
echo '<br />';
echo 129 & 4;
echo '<br />';
echo 129 & 8;
echo '<br />';
echo 129 & 16;
echo '<br />';
echo 129 & 32;
echo '<br />';
echo 129 & 64;
echo '<br />';
echo 129 & 128;
?>
en dat levert op:
1
0
0
0
0
0
0
128
Wat klopt want 129 = 128 + 1.
Link gekopieerd
Remco van Arkelen schreef op 25.02.2006 22:09
Misschien dat PHP die variabelen wel parsed als octale getallen, gezien het feit dat het bij 1 en 8 misgaat.
En wat doe ik daaraan om zeker te weten dat het niet zo is..?
Link gekopieerd