php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 20.01.2006, 18:19  
Erfahrener Benutzer
 
Registriert seit: 25.04.2005
Beiträge: 1.356
HStev zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Zitat:
Zitat von axo
d.h. ich liege mit dem binären system bei unter 10 msec ... ich bezweifle schwer, dass ein indizierter JOIN bei der datenmenge schneller wird.
hmmm wenn dem so ist überzeugt mich das wirklich wieder zu diesen System zu wechseln ... hatte auch mal ne Zeit auf das Binäre System geschworen....

Zitat:
Zitat von axo
das halte ich für ein fadenscheiniges argument ...

erstens kann man sauber konstanten definieren, und zweitens die ganze ACL-kacke in einer zentralen klasse sauberst kapseln, so dass dieses argument auch nicht mehr zählt.
Im Quelltext ok aber auf Datenbankebene zb. im phpmyadmin?
__________________
Gewisse Dinge behält man besser für sich, z.B. das man gewisse Dinge für sich behält.
HStev ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 20.01.2006, 20:17  
axo
Erfahrener Benutzer
 
Registriert seit: 24.12.2004
Beiträge: 1.818
axo ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Im Quelltext ok aber auf Datenbankebene zb. im phpmyadmin?
ich bin grad noch am testen...
folgendes:

man braucht eh diese konstanten in einer tabelle, um z.b. berechtigungen zu benennen o.ä...
d.h. man hat eine tabelle acl_list (id, acl_num, name) ... und diese enthält genau die werte.
also

id | acl_num | name
0 | 0 | nichts
1 | 1 | hallo
2 | 2 | welt
3 | 4 | foo
4 | 8 | bar
5 | 16 | omg

...
dh. man kann relativ leicht

Code:
SELECT users.* FROM users, acl WHERE 
(users.acl & acl.acl_number)  AND acl.name="bar"
formulieren, ... in dynamischen abfragen könnte man dafür dann die ID nehmen.


das system hat aber meines erachtens schon auch nachteile:
- mit einem einzigen float kann man auf 32 bit maximal 1023 objekte schützen.
- für 'exklusive' zugriffsberechtigungen ist das ganze nicht geeignet, d.h. wenn man z.b. lauter dateien schützen will, auf die genau ein user zugreifen kann und alle anderen nicht, macht das ganze keinen sinn.
es macht also keinen sinn, wenn man hauptsächlich zuweisungen der form
user A hat zugriff auf objekt 1
user B hat zugriff auf objekt 2
user C hat zugriff auf objekt 3 ...

hat, das ganze zu verwenden.

das ganze macht dann sinn, wenn man relativ wenige zu schützende objekte hat, und es um viele 'gemeinsame' zugriffe geht, also user A hat auf objekt 1,2,5,6 zugriff, user B nur auf 4 , user C nur auf 4,6,7 , user D hat auf alles zugriff etc...

desweiteren macht das ganze dann sinn, wenn es um vererbbare zugriffe geht - user B hat zugriff auf 4,6,7 und kann daher an 'seine untergruppen' daher nur genau diese zugriffe freigeben ...

wenn es irgendwie möglich ist, die beschränkung von 1023 performant und sauber zu überbrücken, ist es schön, ansonsten muss man sich doch immer wieder ordentlich überlegen, was man wozu braucht.

außerdem revidiere ich grad die 1023 - pow(2,1023) - 1 - d.h. erstes objekt nicht, alle anderen schon - funktioniert schonmal nicht sauber aufgrund von rundungsfehlern.
axo ist offline   Mit Zitat antworten
Alt 21.01.2006, 11:42  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.034
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von seejay
Nicht erst tausend joints wenn ich mal wissen in welchen gruppen der user mit dem namen xx ist.
Nach tausend Joints würde ich die Joins auch nicht mehr sehen.
Aber Spass beiseite, sobald du Änderungen in deinem System machen willst, ist der Aufwand viel grösser.
__________________
Gruss
L
lazydog ist offline   Mit Zitat antworten
Alt 22.01.2006, 11:25  
Erfahrener Benutzer
 
Registriert seit: 07.11.2004
Beiträge: 161
seejay
Standard

des hat mich jetzt die letzten beiden tage immer mal wieder beschäftigt und ich bin zum entschluss gekommen es doch auf normalform umzustellen. Jetzt muss ich zwar meinen teil des codes wieder abändern aber dafür hab ich später weniger probleme
seejay ist offline   Mit Zitat antworten
Alt 09.02.2006, 21:19  
Gast
 
Beiträge: n/a
Standard

Ich stimme axo voll zu. Ich bin auch nur hier gelandet, da ich ein rechtesystem schreiben will, das ebenfalls bitweise arbeitet
Will das auch ungefähr so machen, wie oben beschreiben, muss mir nur überlegen, wie ich nicht nur Gruppenrechte, sondern auch Userrechte unterbekomme...

Habe schon überlegt, ob ich Mitgliedern mit eigenen Berechtigungen eine vituelle Gruppen-ID vergeben soll, damit diese Rechte wie eine weitere Gruppenmitgliedschaft verarbeitet werden.

[EDIT]
Ich vergebe verschiedene Rechte:
(- kein Zutritt => 0 // KEINE SPALTE!!!)
- lesen => 1
- schreiben => 2
- editieren (eigene) => 4
- löschen (eigene) => 8
- editieren (alle) => 16
- löschen (alle) => 32

In der DB mache ich dann für jedes dieser Rechte eine Spalte. zugeordnet werden diese Rechte einem Bereich oder einer Kategorie.

Dann vergebe ich jeder Gruppe eine eindeutige ID:
- 1. Gruppe => 1
- 2. Gruppe => 2
- 3. Gruppe => 4
...

In die Spalten der DB trage ich dann bei jedem Recht die berechtigten Gruppen ein (ID aufaddiert).
Also kann man durch bitweise verunden der Gruppenmitgliedschaften (ID's) und berechtigten Gruppen die Rechte erhalten.

So kann ich alle Berechtigungen für Gruppen erledigen, nun muss ich noch überlegen wie ich Verbote und Userrechte einbauen kann.
Globales Verbot (also für lesen, schreiben, editieren usw. ...) ist kein Problem, aber wie könnte ich nur lesen oder nur schreiben nehmen?
Verbote sollen Konflikte verhindern, wenn gewisse Gruppen keinen Zugriff haben sollen, aber durch eine andere Gruppe Zugriff erhalten

Irgendwelche Vorschläge?
[/EDIT]
  Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Mysql organisation und Rechtesystem SchmaR PHP Tipps 2008 3 08.05.2008 19:25
Problem bei binärem Rechtesystem SilentSight PHP-Fortgeschrittene 27 28.04.2008 15:07

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php admin rechtesystem, rechtesystem phpmyadmin, rechtesystem acl php, rechte von user acl abfragen

Alle Zeitangaben in WEZ +1. Es ist jetzt 02:10 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.