| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
| Autor |
Nachricht |
PhP0Kid Profi-Benutzer
Anmeldedatum: 05.01.2007 Beiträge: 414 Wohnort: Ellwangen (nahe Aalen) Programmiersprachen: PHP, CSS, (X)HTML, SQL, JavaScript, C++ (nach Erfahrung von links nach rechts)
|
Verfasst am: 02.09.2007, 11:29 Titel: [PHP] User & Gruppen |
|
|
Hi,
ich habe mich nun bei einigen Programmierern informiert, wie sie mit User-Rechten und Gruppen umgehen. Hinter die durchschlagende Idee bin ich noch nicht gekommen..
Bisher arbeite ich so:
0 = Gast (Automatisch)
1 = User
.. (andere Rechte)
x = Admin
Das wäre theoretisch hierarchisch aufgebaut, das kann man aber natürlich umgehen, durch Abfragen wie
if($right != 8 && $right != 9){
//Unerlaubt
}
Nun sieht man aber, dass diese Fragen "statisch" sind. Das heißt, ich lege im Vornherein fest, welche Rechte was entsprechen. Ich hätte aber gerne ein dynamsiches Rechte-System, dass man festlegen kann, welche Rechte was dürfen.
Übrigens mit den Gruppen: Ich mach es so, dass wenn man in einer Gruppe ist, die Rechte aus der Gruppe mit den eigenen Rechten verglichen werden und dann die höheren Rechte genommen werden (das nur am Rande).
Ich hoffe ihr habt ein paar Ideen
lG _________________ http://www.Julian-Stier.de | T-REx 2.2
Fertiges ( 16.7.08 ):
* Julian-Stier.de, Blog - Juli/August 2008
Aktuelles ( 16.7.08 ):
* T-REx 2.3.0 - release 2008/2009
* GlobalIndustry - release 2008/2009 |
|
| Nach oben |
|
 |
synapsis Administrator

Anmeldedatum: 15.10.2006 Beiträge: 390 Wohnort: Nahe München Programmiersprachen: C/C++, VB, (Java), PHP, JS, AJAX, Python Compiler: gcc, MS VS2005 SE
|
Verfasst am: 02.09.2007, 13:50 Titel: |
|
|
Du meinst, dass nicht von vornherein festgelegt ist, dass 2 = Admin, 1 = Moderator oder wie?
Ich glaub ich versteh noch nicht ganz, was du mit dynamisch in diesem Fall meinst.  _________________ Pssst... Syncom.org Relaunch im Herbst 2008... bitte weitersagen  |
|
| Nach oben |
|
 |
PhP0Kid Profi-Benutzer
Anmeldedatum: 05.01.2007 Beiträge: 414 Wohnort: Ellwangen (nahe Aalen) Programmiersprachen: PHP, CSS, (X)HTML, SQL, JavaScript, C++ (nach Erfahrung von links nach rechts)
|
Verfasst am: 02.09.2007, 14:00 Titel: |
|
|
Dass ich festlegen kann, wer auf welche Bereiche eines CMS zugreifen darf.
z.B. dass ich spezifische Dinge festlegen kann wie
"DJs" = [auto_increment] und damit z.B. "31"
Und dann kann ich dieser id zuordnen, welche Seiten sie damit betreten darf.. _________________ http://www.Julian-Stier.de | T-REx 2.2
Fertiges ( 16.7.08 ):
* Julian-Stier.de, Blog - Juli/August 2008
Aktuelles ( 16.7.08 ):
* T-REx 2.3.0 - release 2008/2009
* GlobalIndustry - release 2008/2009 |
|
| Nach oben |
|
 |
synapsis Administrator

Anmeldedatum: 15.10.2006 Beiträge: 390 Wohnort: Nahe München Programmiersprachen: C/C++, VB, (Java), PHP, JS, AJAX, Python Compiler: gcc, MS VS2005 SE
|
Verfasst am: 04.09.2007, 10:00 Titel: |
|
|
Nun ja, im Prinzip ist das nur eine etwas kompliziertere Datenbankstruktur. Jetzt kommts aber darauf an, ob du die Rechte per Oberfläche verändern willst, oder ob es reicht, wenn man das per phpmyadmin machen kann. _________________ Pssst... Syncom.org Relaunch im Herbst 2008... bitte weitersagen  |
|
| Nach oben |
|
 |
PhP0Kid Profi-Benutzer
Anmeldedatum: 05.01.2007 Beiträge: 414 Wohnort: Ellwangen (nahe Aalen) Programmiersprachen: PHP, CSS, (X)HTML, SQL, JavaScript, C++ (nach Erfahrung von links nach rechts)
|
Verfasst am: 04.09.2007, 12:38 Titel: |
|
|
Naja, wenn mans per phpmyadmin machen kann, geht das auch per Oberfläche
Und ja, demnach soll es dafür ein freundliches (sexy ) Interface geben xD
Ich habe es bisher so gemacht
user
user_id
user_name
user_email
user_password
user_right
user_group_id
.. (noch andere dinge)
groups
group_id
group_title
group_right
.. (evtl noch andere dinge)
Naja, ich denke das klappt soweit auch gut und es wäre möglich über eine Tabelle rights für jede Seite Rechte festzulegen.. aber wollte da halt ma paar Ideen von euch hören .. von dir .. XD
lG _________________ http://www.Julian-Stier.de | T-REx 2.2
Fertiges ( 16.7.08 ):
* Julian-Stier.de, Blog - Juli/August 2008
Aktuelles ( 16.7.08 ):
* T-REx 2.3.0 - release 2008/2009
* GlobalIndustry - release 2008/2009 |
|
| Nach oben |
|
 |
Shadow Neuer Benutzer
Anmeldedatum: 19.07.2007 Beiträge: 8
Programmiersprachen: XHTML, CSS, Javascript, PHP, SQL, Delphi
|
Verfasst am: 27.09.2007, 20:20 Titel: |
|
|
Meine Realisierung sieht so aus:
User-Tabelle
Gruppen-Tabelle
Die Rechte werden durch einzelne Bits definiert:
1 VIEW
2 READ
4 POST
8 EDIT
16 DELETE
32 REPLY
64 STICKY
128 ANNOUNCE
256 ATTACH
512 POLL
1024 VOTE
Der Bezug zwischen jeder Seite und jeder Gruppe bzw. jedem User wird durch Kombination der Bits mittels | Operator festgelegt:
user_auth
userid | seite1 | seite2 | seite3
1 | 00000000001 | 00000000011 | 00000000111
group_auth sieht entsprechend aus. Das Verfahren funktioniert für eine nach Sektionen unterteilte Rechtevergabe super. Wenn alle Sektionen noch Kategorien enthalten, muss für jede Sektion eine eigene Tabelle angelegt werden, da man keine dreidimensionalen Tabellen abbilden kann... _________________ = tsgaming @ Funpic.de |
|
| Nach oben |
|
 |
PhP0Kid Profi-Benutzer
Anmeldedatum: 05.01.2007 Beiträge: 414 Wohnort: Ellwangen (nahe Aalen) Programmiersprachen: PHP, CSS, (X)HTML, SQL, JavaScript, C++ (nach Erfahrung von links nach rechts)
|
Verfasst am: 28.09.2007, 11:38 Titel: |
|
|
Das selbe Prinzip hat mir ein Freund vor ein paar Wochen mal vorgestellt und ich finde es sehr interessant, wenn auch wohl spezifischer und schwerer zu erweitern
Mal sehen, an was ich weiter arbeite^^ _________________ http://www.Julian-Stier.de | T-REx 2.2
Fertiges ( 16.7.08 ):
* Julian-Stier.de, Blog - Juli/August 2008
Aktuelles ( 16.7.08 ):
* T-REx 2.3.0 - release 2008/2009
* GlobalIndustry - release 2008/2009 |
|
| Nach oben |
|
 |
synapsis Administrator

Anmeldedatum: 15.10.2006 Beiträge: 390 Wohnort: Nahe München Programmiersprachen: C/C++, VB, (Java), PHP, JS, AJAX, Python Compiler: gcc, MS VS2005 SE
|
Verfasst am: 28.09.2007, 16:49 Titel: |
|
|
Von der Performance ist das System wohl kaum zu schlagen. (Rechteverwaltung unter Linux funktioniert auch mit bitweiser kodierung)
Scheint eine recht gute Lösung zu sein.  _________________ Pssst... Syncom.org Relaunch im Herbst 2008... bitte weitersagen  |
|
| Nach oben |
|
 |
PhP0Kid Profi-Benutzer
Anmeldedatum: 05.01.2007 Beiträge: 414 Wohnort: Ellwangen (nahe Aalen) Programmiersprachen: PHP, CSS, (X)HTML, SQL, JavaScript, C++ (nach Erfahrung von links nach rechts)
|
Verfasst am: 28.09.2007, 17:45 Titel: |
|
|
Ich weiß, dadurch ist mein Freund auch darauf gekommen..
Nur für meinen Geschmack eben nicht.. ausdehnbar genug. Das heißt du musst für jeden User etc jedes Mal für jede Seite für jede Art von Recht dieses zuweisen.. Meins ist nicht besser, keinesfalls.. aber ich suche irgwie nach etwas.. Besserem eben
LG _________________ http://www.Julian-Stier.de | T-REx 2.2
Fertiges ( 16.7.08 ):
* Julian-Stier.de, Blog - Juli/August 2008
Aktuelles ( 16.7.08 ):
* T-REx 2.3.0 - release 2008/2009
* GlobalIndustry - release 2008/2009 |
|
| Nach oben |
|
 |
Shadow Neuer Benutzer
Anmeldedatum: 19.07.2007 Beiträge: 8
Programmiersprachen: XHTML, CSS, Javascript, PHP, SQL, Delphi
|
Verfasst am: 29.09.2007, 07:45 Titel: |
|
|
| PhP0Kid hat Folgendes geschrieben: |
| Nur für meinen Geschmack eben nicht.. ausdehnbar genug. Das heißt du musst für jeden User etc jedes Mal für jede Seite für jede Art von Recht dieses zuweisen.. |
Das muss man bei jedem Rechtesystem machen, das diesen Umfang hat. Gibt bei einem Interface ziemlich nette Tabellen mit Massen an Checkboxen.
Mit etwas erweiterten SQL Kenntnissen kann man das aber so lösen, dass man beim Hinzufügen einer neuen Seite und somit Spalte einen Default-Wert festlegt, der für alle User gilt. Ich kenne keine bessere Möglichkeit. Man kann das wenn nötig auch abwandeln, sodass man Rechtegruppen anlegt und dann die Seiten den Gruppen zuweist.
Kann man für diese Methode die Abfrage optimieren? Zur Zeit lese ich die User-Tabelle und alle zum User gehörigen Gruppen aus und kombiniere die Rechte dann in PHP. Ich würde aber gerne schon über JOINs alles auslesen und noch im Statement mittels | (bitwise OR) verbinden. _________________ = tsgaming @ Funpic.de |
|
| Nach oben |
|
 |
synapsis Administrator

Anmeldedatum: 15.10.2006 Beiträge: 390 Wohnort: Nahe München Programmiersprachen: C/C++, VB, (Java), PHP, JS, AJAX, Python Compiler: gcc, MS VS2005 SE
|
Verfasst am: 29.09.2007, 16:34 Titel: |
|
|
Durch eine SQL-Abfrage über mehrere Tabellen sollte das eigentlich gehen. Den Bit-Operator | kennt MySQL auch:
http://dev.mysql.com/doc/refman/5.1/de/bit-functions.html
Man muss nur die verschiedenen Tabellen in der WHERE - Klausel verbinden und den Operator anwenden. _________________ Pssst... Syncom.org Relaunch im Herbst 2008... bitte weitersagen  |
|
| Nach oben |
|
 |
thorn Fortgeschrittener Benutzer

Anmeldedatum: 23.09.2007 Beiträge: 53 Wohnort: Niederried b.K. (CH) Programmiersprachen: PHP, MySQL, (X)HTML, CSS, JS, C, VB
|
Verfasst am: 10.11.2007, 22:35 Titel: |
|
|
Ich versuch da nun auch ein festes und erweiterbares System zu finden...
Ich werde hier einfach mal meine Problemstellung erläutern und meine Denkansätze versuchen auf zu zeichnen...
Gruppe:
Newsposter
Rechte:
News erstellen, editieren, löschen, archivieren
Gruppe:
Moderator
Rechte:
fremde Beiträge editieren, löschen
Gruppe:
Support
Rechte:
Mitgliederdaten einsehen, teilweise ändern
gleiches wie Moderator
Gruppe:
Admin
Rechte:
Mitgliederdaten einsehen, ändern
gleiches wie Moderator
gleiches wie Newsposter
- Einige Gruppen haben teilweise Rechte, die ebenfalls in einer anderen Gruppe ebenfalls vorkommen.
- Es wäre einfacher, eine Gruppe mit Rechten zu definieren und diese anschliessend in Gruppen zusammenfassen, als jedem User einzeln das Recht zu geben...
Meine Idee die ich mal angegangen habe und wohl wieder so machen werde ist:
Tabellen:
access_rights
id | recht
4 | read_user_info
access_group
id | titel | info
1 | Admin | Administrator...
access_group_rights
gid | rid
1 | 4
Bei dem User dann den Eintrag der GruppenID
SQL-Abfrage:
SELECT r.recht FROM access_group_rights AS g LEFT JOIN access_group AS r ON g.rid = r.id WHERE g.gid = $_USER['gruppe'];
In PHP dann ein Array erstellen mit allen vorhandenen User-Rechten alias $_ACCESS
Und an der jeweiligen Stelle im Script dann folgende Abfrage durchführen:
if(isset($_ACCESS['read_user_info']))
Stellt sich mir natürlich auch die Frage: Einbussen aufgrund der Strings
Man könnte natürlich auch eine Code-Tabelle erstellen, wo dann jeweils nur die Zahl ausgelesen wird und abgefragt wird - Mehrarbeit für den Coder, weniger jedoch für den CPU, der einen String formen muss, anstelle einer Zahl... |
|
| Nach oben |
|
 |
thorn Fortgeschrittener Benutzer

Anmeldedatum: 23.09.2007 Beiträge: 53 Wohnort: Niederried b.K. (CH) Programmiersprachen: PHP, MySQL, (X)HTML, CSS, JS, C, VB
|
Verfasst am: 25.11.2007, 13:33 Titel: |
|
|
| Hmm... keine weiteren Anregungen mehr? Schade... |
|
| Nach oben |
|
 |
PhP0Kid Profi-Benutzer
Anmeldedatum: 05.01.2007 Beiträge: 414 Wohnort: Ellwangen (nahe Aalen) Programmiersprachen: PHP, CSS, (X)HTML, SQL, JavaScript, C++ (nach Erfahrung von links nach rechts)
|
Verfasst am: 25.11.2007, 15:15 Titel: |
|
|
Naja, nicht wirklich, weil wir sind zwar eine Menge Möglichkeiten durchgegangen, aber bisher hat sich mir noch keine "Offenbarung" aufgetan, sprich, etwas wirklich wirkungsvolles..
Deine Darstellung glich ja meiner, dennoch finde ich mittlerweile, dass dieses "Linux-ähnliche" System am flexibelsten ist, gleichzeitig aber am meisten Speicher (und evtl auch mehr Performanceeinbußen) braucht.
Derzeit mache ich es noch so, dass es eben User gibt und den Rest mache ich von Hand oder es gibt feste Gruppen (mit einer right_id oder sowas), die dann was bestimmtes dürfen - man muss aber immer alles einzeln programmieren.
Weitere Überlegungen habe ich mir noch nicht gemacht, aber vielleicht kommt irgendwann wieder was von meiner seite ..  _________________ http://www.Julian-Stier.de | T-REx 2.2
Fertiges ( 16.7.08 ):
* Julian-Stier.de, Blog - Juli/August 2008
Aktuelles ( 16.7.08 ):
* T-REx 2.3.0 - release 2008/2009
* GlobalIndustry - release 2008/2009 |
|
| Nach oben |
|
 |
synapsis Administrator

Anmeldedatum: 15.10.2006 Beiträge: 390 Wohnort: Nahe München Programmiersprachen: C/C++, VB, (Java), PHP, JS, AJAX, Python Compiler: gcc, MS VS2005 SE
|
Verfasst am: 25.11.2007, 16:10 Titel: |
|
|
Ich muss ganz ehrlich zugeben, dass ich bisher noch nie ein so umfangreiches Rechtesystem mit PHP verwirklichen musste. Deshalb fehlt mir da vielleicht auch einfach die Erfahrung, was die praktischen Erfordernisse eines solchen System angeht.
Aber die Möglichkeit von thorn klingt ganz gut.  _________________ Pssst... Syncom.org Relaunch im Herbst 2008... bitte weitersagen  |
|
| Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Anhänge in diesem Forum nicht anhängen. Du kannst Dateien in diesem Forum nicht herunterladen.
|
|