Toon posts:

[PHP] Rechten systeem

Pagina: 1
Acties:
  • 133 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik wil een soortement rechten systeem gaan maken voor me site zonder dat ik steeds bepaalde settings moet checken op 1 of 0..

Kan iemand me eens uitleggen hoe ik dit kan maken, ik dacht al een beetje aan het chmod idee met rechten maar dan voor me site..

Tnx.

  • TheDane
  • Registratie: Oktober 2000
  • Laatst online: 21:49

TheDane

1.618

:?

rechten systeem zonder te checken ... hmm jaja

Verwijderd

Topicstarter
Nee ik wil dan 1 variable gebruiken als rechten bron... ;) lijkt me logisch...

dus checken m.b.v die variable of de user mag editen, toevoegen, veranderen, verwijderen, kicken, whatever :)

  • Grum
  • Registratie: Juni 2001
  • Niet online
ik ben eventjes een stukkie voor je aant tikken :+

et komt zo :)

[edit]
duurde ff :P
PHP:
1
<?$theBits = array(   'USER_CAN_READ'   =>  1,   'USER_CAN_POST'   =>  2,   'USER_CAN_EDIT'   =>  4,   'USER_CAN_MOVE'   =>  8,   'USER_CAN_DELETE' => 16,); foreach($theBits as $theKey => $theVal)   define($theKey, $theVal); $theRights = 0; // flags setten: (dit set hem op 1+2+4=7) $theRights |= (USER_CAN_READ | USER_CAN_POST | USER_CAN_EDIT); // flags unsetten: (dit set hem op 5) $theRights &amp;= ~(USER_CAN_POST | USER_CAN_MOVE); // 1 flag checken:// * mag ik posten if($theRights &amp; USER_CAN_POST)   ; // yup!else   ; // nop! // meerdere flags checken:// * mag ik posten en deleten ?// - dit moet btw simpler kunnen $toCheck = (USER_CAN_DELETE | USER_CAN_POST);if(($theRights &amp; $toCheck) == $toCheck)   ; // yup!else   ; // nop!?>

Verwijderd

Topicstarter
Op vrijdag 22 maart 2002 09:46 schreef Grum het volgende:
ik ben eventjes een stukkie voor je aant tikken :+

et komt zo :)
Ik vertrouw op jou :) en wacht wel want kan het zo toch vanavond pas lezen :D

  • Anders
  • Registratie: December 2000
  • Laatst online: 24-08 18:29
Op vrijdag 22 maart 2002 09:45 schreef xtentic het volgende:
Nee ik wil dan 1 variable gebruiken als rechten bron... ;) lijkt me logisch...

dus checken m.b.v die variable of de user mag editen, toevoegen, veranderen, verwijderen, kicken, whatever :)
En dat is in het algemeen, of per onderdeel? Per gebruiker of per groep gebruikers? "Een rechtensysteem" is zo vaag.

Ik spoor veilig of ik spoor niet.


  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 23:53
array :?

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Dit is het systeem....

[topic=356022/1/50]

Gebruik het nu zelf ook en het is makkelijk toe te passen en duidelijk

Programmer - an organism that turns coffee into software.


  • Grum
  • Registratie: Juni 2001
  • Niet online
ghehe zoiets wil ik net posten ...

edit:
zie boven

  • Dido
  • Registratie: Maart 2002
  • Laatst online: 01-09 12:46

Dido

heforshe

idd de aloude truc: 1 bits flags!

was vroeger vanzelfsprekend, maar wie werkt er nu nog op bitniveau? Goed om te zien dat het toch nog voorkomt :)

Wat betekent mijn avatar?


  • Grum
  • Registratie: Juni 2001
  • Niet online
tis overzichtelijk en niet te vergeten bloedje snel :)

Verwijderd

PHP:
1
<?$theRights = 0; // flags setten: (dit set hem op 1+2+4=7) $theRights |= (USER_CAN_READ | USER_CAN_POST | USER_CAN_EDIT); ?>
woa .. die laatste regel .. zoiets heb ik nog nooit gezien in PHP :o is dat een manier om array vals aan elkaar te plakken (of op te tellen) ofzo??? :? :?

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Bitneuken is voor mietjes :)

Het werkt goed tot op zekere mate, echter zitten er wel limitaties aan, bijvoorbeeld zodra er veel verschillende rechten ontstaan, deze "rechten voor elke bit" zal je dan ook altijd exact in de code moeten definieren waar ze voor staan.

Er zijn andere manieren om rechten te creeren.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


Verwijderd

In dit topic: [topic=155153/1/25] legt dusty een mooi rechten systeem uit.

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op vrijdag 22 maart 2002 11:31 schreef Maentor het volgende:
woa .. die laatste regel .. zoiets heb ik nog nooit gezien in PHP :o is dat een manier om array vals aan elkaar te plakken (of op te tellen) ofzo??? :? :?
DAT is nou werken met bits ;)
Op vrijdag 22 maart 2002 11:56 schreef dusty het volgende:
Er zijn andere manieren om rechten te creeren.
*Wacht op voorbeelden*

  • SWINX
  • Registratie: Juni 2001
  • Laatst online: 02-06 23:18
Op vrijdag 22 maart 2002 11:59 schreef ACM het volgende:

*Wacht op voorbeelden*
er even van uitgaande dat userid 1 de eigenaar is en dus alles mag
userid 2 is mod in forum 3
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
user | actie     | value
-----+-------------+-------
1    | mod[1]   | true
1    | mod[2]   | true
1    | mod[3]   | true
1    | html[1]     | true
1    | html[2]     | true
1    | html[3]     | true
1    | ban[1]   | true
1    | ban[2]   | true
1    | ban[3]   | true
2    | mod[3]   | true
2    | html[3]     | true
2    | ban[3]   | true

zo zou ik het bijvoorbeeld doen
maar uit ervaring weet ik dat mijn oplossingen niet altijd even goed zijn ;(

Mannen komen van Mars Tweakers, vrouwen van Venus Bokt


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Grum's manier roeleert.

Wat dusty zegt over "veel verschillende rechten" lijkt mij een beetje onzin, want de "waarde" (het bit) van een bepaald recht is gewoon 2n

simpel zat.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Op vrijdag 22 maart 2002 11:59 schreef ACM het volgende:
*Wacht op voorbeelden*
Op dinsdag 05 juni 2001 00:24 schreef dusty het volgende:
Ik heb de rechten dynamisch gemaakt. Zodra er een nieuwe d/b of iets anders wordt aangemaakt worden er automatisch ID's gegenereerd. Die ik dus aan gebruikers kan toekennen. (door een rechten tabelletje. RightID, UserID)
als die userid de rechtenid heeft dan is het "recht" waar. (dat kan dus ook een ban zijn is namelijk ook een recht.)

Ik heb GEEN groepen lijst. Dat stel ik gewoon samen door een simpel sql statement uit te voeren om te kijken wie een bepaald recht heeft.
(uit bovenstaand topic)

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op vrijdag 22 maart 2002 12:16 schreef drm het volgende:
simpel zat.
Complexe rechten kunnen nog steeds vervelend zijn :)

Als je (in geval van een forum) zo'n rechten-integer _per_ forum bijhoudt kan het idd wel vrij eenvoudig gebruikt worden.

In sommige gevallen kan je dan zelfs alleen op de DB logica vertrouwen voor bepaalde acties.

Btw, dat je 2n verschillende combinaties kan maken zegt nog niet dat je zoveel rechten kan definieren :)
Dat zijn er slechts n...
Op vrijdag 22 maart 2002 12:17 schreef Zef het volgende:
(uit bovenstaand topic)
Sja, ik zag je reply net nadat ik op submit gedrukt had :)

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 23:53
Op vrijdag 22 maart 2002 11:56 schreef dusty het volgende:
Het werkt goed tot op zekere mate, echter zitten er wel limitaties aan, bijvoorbeeld zodra er veel verschillende rechten ontstaan, deze "rechten voor elke bit" zal je dan ook altijd exact in de code moeten definieren waar ze voor staan.
Ik volg het verhaal tot nu toe niet helemaal, maar ik concludeer dus dat ik NIET realtime met 1 of andere formule kan controleren of iets is toegestaan ?

Dus niet zoiets als (pseudocode):

$waarde=126;
als(32 bevind zich in $waarde)
{
bla
}

:?

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

ACM:
Btw, dat je 2n verschillende combinaties kan maken zegt nog niet dat je zoveel rechten kan definieren :)
Dat zijn er slechts n...
obviously ;)

BIGINT: 64 bits integer -> 64 verschillende rechten. Mwah lijkt me wel genoeg...

Ik denk trouwens niet dat een koppeltabel beter of slechter is dan een bitmask-systeem. Ik vind zelf een bitmask gewoon mooier. En die binaire operaties kun je ook prima in je queries verwerken, dus wat dat betreft is de een sowieso al niet beter dan de andere. imo. imHo ;)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Grum
  • Registratie: Juni 2001
  • Niet online
Op vrijdag 22 maart 2002 12:24 schreef ddc het volgende:
Ik volg het verhaal tot nu toe niet helemaal, maar ik concludeer dus dat ik NIET realtime met 1 of andere formule kan controleren of iets is toegestaan ?

Dus niet zoiets als (pseudocode):

$waarde=126;
als(32 bevind zich in $waarde)
{
bla
}

:?
als je mijn verhaaltje had gelezen had je geweten dat je dat zo kan doen:
code:
1
2
if($waarde & 32)
  ; // zit erin

ik ben alleen niet blij dat je de multiple-flag-check-code de check-code 2x nodig hebt om het te controleren :(

ik vind dat dat simpler moet kunnen maar heb nog geen manier gevonden :)

btw een stukje code om met mbv van mijn eerdere code te printen wat wel en niet mag (textueel)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function printRights($inBitSet, $inFlag = 0)
{
  if(!is_array($inBitSet) || !count($inBitSet))
  {
     print "No Bits defined";
     return;
  }  
     
  print "Flag $inFlag implies:";
  foreach($inBitSet as $tmpName => $tmpRight)
     if($inFlag & $tmpRight)
      print " $tmpName";
}
 
printRights($theBits, 13);

dit print
code:
1
Flag 13 implies: USER_CAN_READ USER_CAN_EDIT USER_CAN_MOVE

$theBits komt uit mijn eerste stukje code :)

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 23:53
Op vrijdag 22 maart 2002 13:12 schreef Grum het volgende:
als je mijn verhaaltje had gelezen had je geweten dat je dat zo kan doen:
code:
1
2
if($waarde & 32)
  ; // zit erin
Hmmmmja sorry. :)
Had idd moeten bedenken dat je puur getallen hebt gedefineerd als leesbare dingen.

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op vrijdag 22 maart 2002 13:10 schreef drm het volgende:
BIGINT: 64 bits integer -> 64 verschillende rechten. Mwah lijkt me wel genoeg...
Maar niet als je dan voor 50 forums de rechten in 1 integer gaat stoppen ;)

Wel als je 50 losse integers hebt per user/groep :)

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

mwjah, da's waar. dan kan je beter een koppeltabel gebruiken met userID,rightID,forumID

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Grum
  • Registratie: Juni 2001
  • Niet online
Je maakt dan sowieso een link tabel met rights per forum (lijkt me slim iig :P)

en dan niet voor iedereen .. maar alleen voor mensen die non-default rights hebben anders word je database nutteloos groot :)

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 23:53
Op vrijdag 22 maart 2002 13:23 schreef drm het volgende:
mwjah, da's waar. dan kan je beter een koppeltabel gebruiken met userID,rightID,forumID
Ik doe het (drie)dubbel

user (tabel) -> status (veld) -> status_groepen (koppel) -> groepen (tabel) -> groepen_rechten (koppel) -> rechten (tabel)

user (tabel) -> user_groepen (koppel) -> groepen (tabel) -> groepen_rechten (koppel) -> rechten (tabel)

:)

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Op vrijdag 22 maart 2002 12:24 schreef ddc het volgende:
[..]
$waarde=126;
als(32 bevind zich in $waarde)
[..]
Als ((X and 32) = 32) dan heeft hij rechten 32 :)


Is de leuke operator functies 3 and 2 = 2 :)

[edit: okay.. niet reageren als het vensterje al geruime tijd openstaat zonder de nieuwe reacties eerst te lezen :+ :Y)

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Grum:
Je maakt dan sowieso een link tabel met rights per forum (lijkt me slim iig :P)

en dan niet voor iedereen .. maar alleen voor mensen die non-default rights hebben anders word je database nutteloos groot :)
Dat kan ook nog, ja... Een combinatie van beiden... Iets minder netjes imo.
ddc:
Ik doe het (drie)dubbel

user (tabel) -> status (veld) -> status_groepen (koppel) -> groepen (tabel) -> groepen_rechten (koppel) -> rechten (tabel)

user (tabel) -> user_groepen (koppel) -> groepen (tabel) -> groepen_rechten (koppel) -> rechten (tabel)
Ik geloof niet dat ik je begrijp :?
dusty:
Als ((X and 32) = 32) dan heeft hij rechten 32 :)


Is de leuke operator functies 3 and 2 = 2 :)
Als ((X and 32) = true) is imo genoeg ;)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Grum
  • Registratie: Juni 2001
  • Niet online
jah maar true is in php niet false (dus non 0 :P)

officeel (als non-nul niet true zou zijn) zou je et dus wel zo als dusty moeten doen (dat moet je dus ook doen bij multiple bits in 1x)

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 23:53
Op vrijdag 22 maart 2002 13:34 schreef drm het volgende:
Ik geloof niet dat ik je begrijp :?
Wouw das dan ook voor het eerst :D ;)

Maar ik heb dus 4 deze tabellen:

* users
* groups
* rights
* ranks
* groups_ranks
* groups_users
* groups_rights

Daarbij moet worden gezegd dat de tabel users een veld "ranks_id" heeft, ik neem aan dat jij nu wel de link kan leggen hoe het werkt :)


Vergelijk de rank met een primaire gebruikersgroep onder windows.

  • Grum
  • Registratie: Juni 2001
  • Niet online
Op vrijdag 22 maart 2002 13:34 schreef drm het volgende:

Ik geloof niet dat ik je begrijp :?
hij had et niet over de rechten maar over het doorlinken van tabellen :)

[edit]

als je tabel users een veld ranks_id heeft zit er echt wat fout :P

dan heb je nl 2x ranks_id :)

users.ranks_id en users.id -> groups_users -> groups_ranks -> ranks_id

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Okay ik heb ongeveer de volgende tabellen.

Gebruikers (Userid)
Rechten (RightID)
RechtenGebruikers (UserID,RightID)

Hou er rekening mee dat ik deze rechten structuur gebruik voor mijn hele website en NIET alleen voor een webboard gedeelte!

Bij het forum tabel heb ik
ForumID
Forum<geblaat, description e.d.>
TypeWebboard ( public, private, mededelingen, SU-fora e.d.)

Dan voor de rechten heb ik

ModID
LeesID
SchrijfID
ReactieID
e.d.

Als ik nu in mijn webbrowser tegen mijn site zeg van "Maak deze forum erbij" wordt de nieuwe rechten ID's automatisch aangemaakt.

Maar voor andere gedeelten van de website gebruik ik dus exact dezelfde rechten tabellen, er wordt gewoon een ID aangemaakt en die opgeslagen bij dat item.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

dusty:
Gebruikers (Userid)
getver :r Ben jij ook zo'n codert die allemaal engels en nederlands door elkaar gebruikt? vies... heel vies... :+
dusty legde daarnaast ook e.e.a. uit over zijn rechtensysteem
vind ik niet verkeerd. :)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Topicstarter
Grin, ik ben ff weg en me topic is al een hele conversatie :+

wat ik wil is userbased rechten! :) waarom? lijkt me simpel

bv: per user de volgende rechten

recht tot het
[plaatjes]
toevoegen
veranderen
deleten
verplaatsen

[gallery]
toevoegen
veranderen
deleten

[site]
site info veranderen
toevoegen
deleten.

zo :)... en dat wil ik dus zo ongeveer in rechten!... mja dat is nogal wat :D

  • Grum
  • Registratie: Juni 2001
  • Niet online
en wat is nu je probleem ? ik heb al een keurige mogelijke oplossing gegeven

vragen hoe je het moet toepassen is vragen om een slotje want alle code die je nodig hebt vind je in deze thread :)

Verwijderd

Topicstarter
Op vrijdag 22 maart 2002 18:44 schreef Grum het volgende:
en wat is nu je probleem ? ik heb al een keurige mogelijke oplossing gegeven

vragen hoe je het moet toepassen is vragen om een slotje want alle code die je nodig hebt vind je in deze thread :)
Ik weet het en dank U daarvoor :)... Ik ga er mee spelen...

Verwijderd

Binnenkort heb ik een rechtensysteem voor mijn site. Hebben? gratis......

je kan dan statussen aanmaken (bijv. Admin zonder Crewforum) en een member kan je dan die status geven. GoT gebruikt ook zoiets......

  • Grum
  • Registratie: Juni 2001
  • Niet online
Wat je kan met je systeem zegt nix over de interne werking van je systeem.

Je kan het op miljoenen manieren doen en daarvan zijn der maar een paar 'echt' efficient te noemen.

Verwijderd

Topicstarter
Op vrijdag 22 maart 2002 19:06 schreef GSMboy het volgende:
Binnenkort heb ik een rechtensysteem voor mijn site. Hebben? gratis......

je kan dan statussen aanmaken (bijv. Admin zonder Crewforum) en een member kan je dan die status geven. GoT gebruikt ook zoiets......
Jah hebben...
Op vrijdag 22 maart 2002 19:07 schreef Grum het volgende:
Wat je kan met je systeem zegt nix over de interne werking van je systeem.

Je kan het op miljoenen manieren doen en daarvan zijn der maar een paar 'echt' efficient te noemen.
Ik zat zelf te denken om zo iets te doen..

$sec = "xXxxXXXX";

de 1e x staat voor bv editen van pictures
de 2e x staat voor bv het deleten van pics etc etc etc

en daar dan een controle script voor schrijven :)

  • Grum
  • Registratie: Juni 2001
  • Niet online
dat doe je precies etzelfde met mijn methode .. alleen dan met bits :)

Verwijderd

Topicstarter
Op vrijdag 22 maart 2002 19:51 schreef Grum het volgende:
dat doe je precies etzelfde met mijn methode .. alleen dan met bits :)
Ik heb net het hele topic gelezen en ga nu het andere topic van dusty lezen, maar moet zeggen dat ik er nog weinig van begrijp mja dat ben ik he ;) maar gaat het nog een paar keer lezen dus zal het uiteindelijk wel moeten begrijpen.. Maar je code die je als 1e reactie hebt gegeven is voor mij nog ff niet te begrijpen... maar verder zal het goed komen B-) ooit :+

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Op vrijdag 22 maart 2002 14:56 schreef drm het volgende:

[..]

getver :r Ben jij ook zo'n codert die allemaal engels en nederlands door elkaar gebruikt? vies... heel vies... :+
[..]

vind ik niet verkeerd. :)
Nope geen woord nederlands in mijn tabellen, ook geen woord nederlands in mijn code, tenzij het een nederlands-talig programma is. ;)

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Op vrijdag 22 maart 2002 21:11 schreef xtentic het volgende:
[..]
Maar je code die je als 1e reactie hebt gegeven is voor mij nog ff niet te begrijpen... maar verder zal het goed komen B-) ooit :+
En:
$sec = "xXxxXXXX";

de 1e x staat voor bv editen van pictures
de 2e x staat voor bv het deleten van pics etc etc etc
Geef een waarde aan die x-en.

1e X = 1
2e X = 2
3e X = 4
4e X = 8
etc.

Krijg je dus een rechten systeem met BITS ipv BYTES. aangezien je dan de verschillende rechten op kunt tellen. ( 1 + 2 = 3 )

en 3 valt alleen te verdelen in 2 en 1. Dus heeft iemand rechten-niveau 3 betekent dat dat hij rechten op 1 en 2 heeft. (edit pics & delete pics)

Juist hierdoor is het achterliggende gedeelte wat jij gebruikt exact hetzelfde als wat Grum je al had gegeven.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


Verwijderd

Op vrijdag 22 maart 2002 19:19 schreef xtentic het volgende:

[..]

Jah hebben...
[..]
Is goe! Zodra ik hem heb krijg je hem!

Verwijderd

Topicstarter
Ik ben eens wezen spelen, het resultaat staat hier

http://217.121.134.169/Php/gallery/rights.php

Ik zit nu alleen te bedenken of ik niet bepaalde items vergeet :)

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

dusty:
Krijg je dus een rechten systeem met BITS ipv BYTES. aangezien je dan de verschillende rechten op kunt tellen. ( 1 + 2 = 3 )

en 3 valt alleen te verdelen in 2 en 1. Dus heeft iemand rechten-niveau 3 betekent dat dat hij rechten op 1 en 2 heeft. (edit pics & delete pics)

Juist hierdoor is het achterliggende gedeelte wat jij gebruikt exact hetzelfde als wat Grum je al had gegeven.
Nooit begrepen waarom men met + werkt ipv. met |
Als als rechten 5 heb, is dat ook te verdelen in 1 + 4. Maar ook in 2 + 3.
Ik snap wel dat dat niet terecht is omdat je alleen met machten van 2 moet werken, maar OR is foolproof.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Op zaterdag 23 maart 2002 17:18 schreef drm het volgende:
[..]
Nooit begrepen waarom men met + werkt ipv. met |
Als als rechten 5 heb, is dat ook te verdelen in 1 + 4. Maar ook in 2 + 3.
Ik snap wel dat dat niet terecht is omdat je alleen met machten van 2 moet werken, maar OR is foolproof.
Ik leg met + uit omdat ik niet uitleg hoe OR werkt e.d. Heb ik geen zin in, dus als hij dat exact wilt weten zoekt hij een online manual over binair rekenen en gaat hij die fijn lezen.

als je niet met machten van 2 zou werken dan zou je ook elk getal alleen kunnen opdelen in 1-en. Dus die logica gaat niet op. ;)

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • chris
  • Registratie: September 2001
  • Laatst online: 11-03-2022
Op zaterdag 23 maart 2002 17:18 schreef drm het volgende:

[..]

Nooit begrepen waarom men met + werkt ipv. met |
Als als rechten 5 heb, is dat ook te verdelen in 1 + 4. Maar ook in 2 + 3.
Ik snap wel dat dat niet terecht is omdat je alleen met machten van 2 moet werken, maar OR is foolproof.
Je werkt alleen maar met 2^n.
daardoor kan je bij een 64 bits LONGINT (2^65)-1 verschillende combinaties krijgen, welke allemaal zijn op te splitsen in machten van 2.
code:
1
2
3
4
5
6
7
8
1   2^0
2      2^1
3   2^0 + 2^1
4          2^2
5   2^0 +    2^2
6      2^1 + 2^2
7   2^0 + 2^1 + 2^2
8              2^3

Enz.
hierdoor krijg je bij een n-bits integer 2^n verschillende combinaties, en je kan dus n rechten toewijzen.....
Correct me if i'm wrong...

  • Grum
  • Registratie: Juni 2001
  • Niet online
Op vrijdag 22 maart 2002 12:18 schreef ACM het volgende:

Btw, dat je 2n verschillende combinaties kan maken zegt nog niet dat je zoveel rechten kan definieren :)
Dat zijn er slechts n...
thread niet gelezen ? >:)

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op zondag 24 maart 2002 00:00 schreef Grum het volgende:
thread niet gelezen ? >:)
Ik wel... Lees de opmerking nog es een paar keer door.

  • Grum
  • Registratie: Juni 2001
  • Niet online
dat zei jij ook ... alleen dan in 2 woorden :+

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

/dev/null:
Je werkt alleen maar met 2^n.
oei, pas op. ^ as in 2n en niet 2 XOR n :+
daardoor kan je bij een 64 bits LONGINT (2^65)-1
Waar haal je die 65 vandaan? Moet dan toch ook gewoon 64 zijn, lijkt mij? niet 2n+1 -1 :?
verschillende combinaties krijgen, welke allemaal zijn op te splitsen in machten van 2.
code:
1
2
3
4
5
6
7
8
1   2^0
2      2^1
3   2^0 + 2^1
4          2^2
5   2^0 +    2^2
6      2^1 + 2^2
7   2^0 + 2^1 + 2^2
8              2^3

Enz.
hierdoor krijg je bij een n-bits integer 2^n verschillende combinaties, en je kan dus n rechten toewijzen.....
Correct me if i'm wrong...
Dat klopt, ja. Maar de volgende eigenschap van de operatoren + en OR
(cn + cm) === (cn OR cm)
gaat alleen op wanneer
c, n en m gehele getallen zijn
c een macht van 2 is
n niet gelijk is aan m
Daarom vindt ik het niet terecht om de + operator te gebruiken. Daarom zeg ik: de or operator is foolproof ;) Dan hoef je namelijk geen rekening te houden met die 3 regeltjes. Dan ben je namelijk echt authentiek aan het bitneuken

daarnaast denk ik dat | ook een fractie sneller is, maar ach...

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Topicstarter
weet iemand trouwens hoe je dit snel met mysql kan controlleren? dus een selectie maakt van alles wat een user zoekt behalve waar bijvoorbeeld een recht ook 32 bevat (voorbeeld)

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

yay! rtfm! ;)
edit:
tip: AND

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Topicstarter
k ik ga't lezen.

  • grote_oever
  • Registratie: Augustus 2002
  • Laatst online: 19:00
ik heb het zo

per categorie:
categorie_id
categorie_include
categorie_naam
rechten_lees
rechten_schrijf
rechten_edit
rechten_delete

hier achter staan de gebruikers_id's gescheiden door | (dus |1|122|23| )

en voor een specefiek bericht kan ik het ook nog bepalen via een wat kolommen die bij de tabel van het bericht staan qwie wat mag doen

bericht_id
bericht_auteur
bericht_inhoud
bericht_titel
rechten_lees
rechten_schrijf
rechten_edit
rechten_delete


ik weet het kost wat db query's maar zo kun je heel precies regelen wie op welke pagina wat mag.bij een nieuw bericht aan maken worden de rechten standaard van de categorie gehaald of kunnen ingesteld worden


iemand nog op/aanmerkingen
Pagina: 1