PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : forumpermissions aufschlüsseln


summsel
20.01.2004, 04:54
Weiss schon jemand, wie sich die forumpermissions aufdröseln ?


welche Zahl des 6stelligen "Zahlencodes" steht für was ?
und welche Zahl bedeutet was?

$bbuserinfo[forumpermissions] => Array
(
[1] => 131071
[2] => 131071
)

Xenon
20.01.2004, 17:58
schau mal in includes/init.php da stehen am ende die ganzen bitwerte für die einzelnen permissions (und andere sache)

summsel
20.01.2004, 19:27
mh, das hilft mir leider nicht so sehr :(:(

Ich dachte die Zahlenreihe wird explodet und dann hat jede Zahl eine Bedeutung ?

Boothby
20.01.2004, 19:42
Der 6 stellige Zahlencode steht für einen binären Wert. Mit einem Taschenrechner kannst das umrechnen. So steht 131071 z.B. für 11111111111111111. Hierbei repräsentiert jede Stelle genau eine Permission. 1 = an, 0 = aus, oder was auch immer.

summsel
20.01.2004, 23:46
ahjo, danke ! :)

vb3 nutzt decbin()
aber was fängt vb3 dann mit dieser Zahl an ?
zumal ich keine Zeile mit bindec() gefunden hab ?

Boothby
21.01.2004, 18:25
Ok, ein kleines Beispiel:

Angenommen du möchtest 4 Permissions definieren.

Das funzt dann wie folgt:


define ('PERMa', 1); // entspricht 0001
define ('PERMb', 2); // entspricht 0010
define ('PERMc', 4); // entspricht 0100
define ('PERMd', 8); // entspricht 1000


Jetzt folgt ein kleiner Exkurs in Binärverknüpfung. Siehe hiezu auch: http://de.php.net/manual/de/print/language.operators.bitwise.php

Der Operator & gibt für jedes Bit genau dann 1 zurück, wenn an der jeweils gleichen Stelle 1 steht.

1101 & 0100 ergibt dann z.B. 0100. Und 0100 ist true.

Angenommen jemand besitzt die Permissions a, b und d. In diesem Fall wäre seine Binärzahl: 1011, was soviel wie 1 + 2 + 8 = 11 entspricht. Somit wäre seine Variable $myperm = 11.

Wenn du jetzt abprüfen willst, ob Permission c für den User gesetzt ist, dann erfolgt folgende Abfrage:



if ($myperm & PERMc)
{
...



Im vorliegenden Fall wird 1011 mit 0100 verknüpft, was 0000 ergibt, da an keiner Stelle die Bits übereinstimmen. Und 0000 ist false, somit keine Berechtigung.

summsel
21.01.2004, 18:27
DANKE !!!!!!!!!!! :)

das war ja nun mal aufschlussreich !

schade dass es hier noch kein Karma gibt ;)