[php/mysql] Rechten-systeem

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Tommetje
  • Registratie: Februari 2004
  • Laatst online: 19-11-2024
Oké, dit is mijn eerste topic hier, dus vertel het maar als ik iets fout doe ;).


Ik heb een probleempje, ik ben bezig met een systeempje waar een bepaald aantal mensen kan inloggen en dingen kan doen.
Iemand kan 4 dingen doen. Wat deze dingen zijn, is nu niet echt relevant. Maar als iemand ding 3 kan uitvoeren, betekent dit dat hij ook 1 en 2 kan uitvoeren. Nu moet ik dus hiervoor iets bedenken (op gebied van de db (mysql) en php). Wat is nu het beste en het simpelste om de rechten op te slaan in de database en te controleren op de php-pagina? Ik zelf dacht al aan 4 velden in de database met een boolean, maar ik denk dat dit niet echt handig werkt. Iemand een ideetje? :)

Hoi!


Acties:
  • 0 Henk 'm!

  • simon
  • Registratie: Maart 2002
  • Laatst online: 00:18
Maak een tabel, maak daarin de velden voor de rechten, zorg dat je ze per gebruiker en gebruikersgroep e.d. kan ophalen. Zeg in zo'n veld wat de gebruiker wel mag/niet mag. haal het per pagina op. Simpel als taart.

|>


Acties:
  • 0 Henk 'm!

  • dream0r
  • Registratie: Oktober 2001
  • Niet online
Je zou gewoon 4 velden met booleans kunnen gebruiken hoor. Dan moet je alleen bij het maken van de rechten array even goed opletten. Als de gebruiker bijv. actie 3 op true heeft staan moet je bij het maken van de rechten array actie 1 en actie 2 ook even op true zetten. (Gewoon de waarde overschrijven)


In dit topic vind je overigens meer informatie over een goed rechtensysteem.

[ Voor 15% gewijzigd door dream0r op 30-08-2004 14:52 ]


Acties:
  • 0 Henk 'm!

  • lordgandalf
  • Registratie: Februari 2002
  • Laatst online: 19-09 15:33
wat denk je van een int van 1 char lang dan kun je er 1 2 3 of 4 in opslaan en je checked gewoon aan de hand van een value in je sessie welke rechten iemand heeft


if ($rechten == "1"){
u heeft gebruikers rechten
}


zo doe ik het scheelt weer drie velden en ik vindt het iets makkelijker progen en je hebt minder database overhead


enz.


PS: weet niet of dit zo gaat werken in php geloof dat het zo was heb al lang niet gephped
en sessies dat kun je met google wel vinden (en dit eigenlijk ook wel)

[ Voor 15% gewijzigd door lordgandalf op 30-08-2004 14:52 ]

Steam: Profile / Socialclub: Profile / Uplay: minedwarf / Origin: lordgandalf3


Acties:
  • 0 Henk 'm!

  • Tommetje
  • Registratie: Februari 2004
  • Laatst online: 19-11-2024
Hmz, ik denk dat de oplossing van ndeleeuw het simpelste is en het snelste. Of niet?
Nouja, ik ga even wat proberen met dat ideetje. :)

Hoi!


Acties:
  • 0 Henk 'm!

Verwijderd

Tommetje schreef op 30 augustus 2004 @ 14:46:Wat is nu het beste en het simpelste om de rechten op te slaan in de database en te controleren op de php-pagina? Ik zelf dacht al aan 4 velden in de database met een boolean, maar ik denk dat dit niet echt handig werkt. Iemand een ideetje? :)
Dat is ongeveer wat mysql zelf doet. Zie bijv. de mysql.user tabel als je daarbij kunt). Kan op zich best voldoende zijn en is lekker simpel.


Ik zou een tabel met rechten maken en een tabel met users. Vervolgens een koppeltabel die rechten aan users koppelt.


In PHP maak je dan een functie die je aanroept als bijv. authorize('SAVE",$user) en TRUE of FALSE teruggeeft afhankelijk van de vraag of $user het recht 'SAVE' heeft. Test die functie wel even goed.


Als je wilt kun je het nog uitbreiden met usergroepen, maar dat kost je weer een extra tabel en koppeltabel.

Acties:
  • 0 Henk 'm!

  • Tommetje
  • Registratie: Februari 2004
  • Laatst online: 19-11-2024
Hmmz, ik zie hier nu dus 3 (toch?) ideeën voorbij fietsen. Ik ga ze allemaal even bekijken en proberen ed.
Het hoeft gelukkig niet erg uitgebreid, omdat het toch maar voor intern gebruik met maar een paar tientallen users is.


Ik ga even aan de slag en laat wel wat horen wat het geworden is. Bedankt :)

Hoi!


Acties:
  • 0 Henk 'm!

  • Mac_Cain13
  • Registratie: Juni 2003
  • Laatst online: 17-09 15:48
Het systeempje van ndeleeuw is idd goed bruikbaar, zeker als je het kleinschalig houd. Als je toch iets uitgebreider wil zou ik eens naar het systeem van Dusty kijken. Wat in dit topic duidelijk word uitgelegt.
Dat is lekker flexibel en makkelijk uit te breiden. Er is namelijk niets zo naar als het moeten herschrijven van je code omdat er stukken (zoals je rechten systeem) niet meer voldoen.

Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
Als je altijd zult hebben dat iemand die ding 3 kan uitvoeren dan ook ding 2 en 1 kan uitvoeren, dan kun je gewoon (zoals als voorgesteld) basic userlevels gebruiken.


Elke actie krijgt een level wat je nodig hebt om uit te voeren, en elke user kriujgt een userlevel, is dat hoger of gelijk aan het level van de actie, dan mag je dit uitvoeren.


Pak die levels trouwens wel ruim, zeker als er nog acties bij gaan komen, want je zit snel door je beschikbare levels heen. :)


(Ircbots als Q en L van Quakenet gebruiken userlevels van 0-1000 overigens.)

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


Acties:
  • 0 Henk 'm!

  • Tommetje
  • Registratie: Februari 2004
  • Laatst online: 19-11-2024
Ok, ik ben dus aan de slag gegaan met het systeem van ndeleeuw (en een beetje grijze vos ;) ) en dit lijkt goed te werken (het is maar voor een intranet). Bedankt allen! :)

Hoi!

Pagina: 1