T
TiMbO2k
Hi,
ich habe eine Rechteverwaltung, bei der für jede Funktion eine Zahl definiert wird. Diese Zahl wird bei jeder neuer Funktion verdoppelt.
Also zum Beispiel:
News posten - 1
News editieren - 2
News löschen -4
Kommentare posten - 8
Kommentare löschen - 16
usw.
Je nachdem welche Berechtigung der User hat, werden die Zahlen der jew. Funktionen addiert. Wenn ein User zum Beispiel nur News und Kommentare posten darf, dann ist seine Berechtigung: 9 (1+8).
Anhand des & Operators kann man nun prüßen, ob die Zahl der Funktion in der Berechtigung in Bits gesetzt ist.
Zum Beispiel beim Überprüfen ob der User mit der Berechtigung 9, News posten darf:
if(9 & 1) { echo "ok"; } else { echo "verweigert"; }
Die Verfahrensweise funktioniert bei mir einwandfrei. Mittlwerweile bin ich bei 31 Funktionen angekommen und ab der 32. Funktion funktioniert das Sytem leider nicht mehr .
Um das zu veranschaulichen habe ich folgendes Script erstellt:
Vielleicht kann mir einer sagen, wieso es aber der 32. Funktion nicht mehr geht. Wenn es eine Lösung gibt, wäre ich auch sehr dankbar.
MfG
TiMbO2k
ich habe eine Rechteverwaltung, bei der für jede Funktion eine Zahl definiert wird. Diese Zahl wird bei jeder neuer Funktion verdoppelt.
Also zum Beispiel:
News posten - 1
News editieren - 2
News löschen -4
Kommentare posten - 8
Kommentare löschen - 16
usw.
Je nachdem welche Berechtigung der User hat, werden die Zahlen der jew. Funktionen addiert. Wenn ein User zum Beispiel nur News und Kommentare posten darf, dann ist seine Berechtigung: 9 (1+8).
Anhand des & Operators kann man nun prüßen, ob die Zahl der Funktion in der Berechtigung in Bits gesetzt ist.
Zum Beispiel beim Überprüfen ob der User mit der Berechtigung 9, News posten darf:
if(9 & 1) { echo "ok"; } else { echo "verweigert"; }
Die Verfahrensweise funktioniert bei mir einwandfrei. Mittlwerweile bin ich bei 31 Funktionen angekommen und ab der 32. Funktion funktioniert das Sytem leider nicht mehr .
Um das zu veranschaulichen habe ich folgendes Script erstellt:
PHP:
$temp = 1;
for($i=1; $i<=35; $i++)
{
$wert = $temp = $temp*2;
$summe = $summe+$wert;
}
$berechtigung = $summe+1;
echo "<p>Berechtigung: ".$berechtigung."<p>";
$temp = 1;
for($i=1; $i<=35; $i++)
{
$wert = $temp = $temp*2;
echo $i." : ".$wert." : ";
if($berechtigung & $wert) { echo "ok<br>"; } else { echo "error<br>"; }
}
Vielleicht kann mir einer sagen, wieso es aber der 32. Funktion nicht mehr geht. Wenn es eine Lösung gibt, wäre ich auch sehr dankbar.
MfG
TiMbO2k