FAQ Suchen Synapsis Wiki Projekte Mitgliederliste Benutzergruppen Profil Einloggen, um private Nachrichten zu lesen Registrieren Login

[PHP] User & Gruppen

 
Neues Thema eröffnen   Neue Antwort erstellen    Syncom.org Foren-Übersicht -> Interpretersprachen
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)

BeitragVerfasst am: 02.09.2007, 11:29    Titel: [PHP] User & Gruppen Antworten mit Zitat

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 Very Happy


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
Benutzer-Profile anzeigen Private Nachricht senden
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

BeitragVerfasst am: 02.09.2007, 13:50    Titel: Antworten mit Zitat

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. Wink

_________________
Pssst... Syncom.org Relaunch im Herbst 2008... bitte weitersagen Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
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)

BeitragVerfasst am: 02.09.2007, 14:00    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
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

BeitragVerfasst am: 04.09.2007, 10:00    Titel: Antworten mit Zitat

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 Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
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)

BeitragVerfasst am: 04.09.2007, 12:38    Titel: Antworten mit Zitat

Naja, wenn mans per phpmyadmin machen kann, geht das auch per Oberfläche Wink

Und ja, demnach soll es dafür ein freundliches (sexy Razz) 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
Benutzer-Profile anzeigen Private Nachricht senden
Shadow
Neuer Benutzer


Anmeldedatum: 19.07.2007
Beiträge: 8

Programmiersprachen: XHTML, CSS, Javascript, PHP, SQL, Delphi

BeitragVerfasst am: 27.09.2007, 20:20    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
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)

BeitragVerfasst am: 28.09.2007, 11:38    Titel: Antworten mit Zitat

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 Smile

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
Benutzer-Profile anzeigen Private Nachricht senden
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

BeitragVerfasst am: 28.09.2007, 16:49    Titel: Antworten mit Zitat

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. Wink

_________________
Pssst... Syncom.org Relaunch im Herbst 2008... bitte weitersagen Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
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)

BeitragVerfasst am: 28.09.2007, 17:45    Titel: Antworten mit Zitat

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 Very Happy


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
Benutzer-Profile anzeigen Private Nachricht senden
Shadow
Neuer Benutzer


Anmeldedatum: 19.07.2007
Beiträge: 8

Programmiersprachen: XHTML, CSS, Javascript, PHP, SQL, Delphi

BeitragVerfasst am: 29.09.2007, 07:45    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
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

BeitragVerfasst am: 29.09.2007, 16:34    Titel: Antworten mit Zitat

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 Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
thorn
Fortgeschrittener Benutzer


Anmeldedatum: 23.09.2007
Beiträge: 53
Wohnort: Niederried b.K. (CH)
Programmiersprachen: PHP, MySQL, (X)HTML, CSS, JS, C, VB

BeitragVerfasst am: 10.11.2007, 22:35    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
thorn
Fortgeschrittener Benutzer


Anmeldedatum: 23.09.2007
Beiträge: 53
Wohnort: Niederried b.K. (CH)
Programmiersprachen: PHP, MySQL, (X)HTML, CSS, JS, C, VB

BeitragVerfasst am: 25.11.2007, 13:33    Titel: Antworten mit Zitat

Hmm... keine weiteren Anregungen mehr? Schade...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
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)

BeitragVerfasst am: 25.11.2007, 15:15    Titel: Antworten mit Zitat

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 .. Very Happy

_________________
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
Benutzer-Profile anzeigen Private Nachricht senden
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

BeitragVerfasst am: 25.11.2007, 16:10    Titel: Antworten mit Zitat

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. Wink

_________________
Pssst... Syncom.org Relaunch im Herbst 2008... bitte weitersagen Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Syncom.org Foren-Übersicht -> Interpretersprachen Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
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.



Powered by php B. B. © 2001, 2005 php B. B. Group
Template xabbBlue für php B. B. Foren - created by php b. b. styles
Modified by synapsis
Protected by CTracker