login  Naam:   Wachtwoord: 
Registreer je!
 Forum

meerdere rechten

Offline Ultimatum - 12/04/2006 19:08
Avatar van UltimatumPHP expert beste mensen , ik moet voor een school een website maken en ook een login systeem, alleen... de leraren hebben dan alleen toegang tot het stuk van hun klas, makkelijk ..., maar sommige mensen hebben ook toegang tot meerdere klassen en daar word het al knap lastig want normaal stop ik dan cijfertjes in de database alleen dat gaat dan moeilijk want iemand die alle klassen mag zien kan ik moeilijk 4 velden gaan geven en daar dan 1, 2, 3, 4 inplaatsen

ik zou graag van mensen willen horen die het zelfde probleem als mij hebben, heo ze dit hebben opgelost, of mensen die een goeie oplossing hebben, want ik kom er echt niet uit 

7 antwoorden

Gesponsorde links
Offline webstab - 12/04/2006 19:13 (laatste wijziging 12/04/2006 19:17)
Avatar van webstab PHP ver gevorderde In de tabel met de leden een kolom met toegang en dan daar bv
1,3,4
bij het uithalen splitsen.

  1. <?php
  2. $klas = 2; // de klas waarover het gaat
  3. $db = "1,3,4"; // de klassen waar hij toegang heeft (eventueel uit db gehaald)
  4. $toegang = explode(",", $db);
  5. if (in_array($klas,$toegang)) {
  6. echo "toegang";
  7. } else {
  8. echo "geen toegang";
  9. }
  10. ?>
Offline Ch0coschijt - 12/04/2006 19:17
Avatar van Ch0coschijt HTML interesse of je maakt meerdere velden aan dus
klas1 = 1 //1 = wel recht 0 - geen recht
klas2 = 1
enz....

of je doet 1 veld en bij bijv
1 = geen rechten
2 = recht klas 1
3 = recht klas 2
4 = recht klas 3

en als je klas 1 en 3 wil
dat je dan 6 krijgt 


Offline Richard - 12/04/2006 19:33
Avatar van Richard Crew algemeen ongeveer zoals chocoschijt bedoelt, kun je bitwise gaan rekenen.

als je bv. klas 1 en 3 wilt, doe je (ook in SQL): 1 | 3.
als je wilt weten of bijv. een leraar klas 2 mag zien, doe je iets als
  1. <?php
  2. if ($row['recht'] & 2)
  3. {
  4. // mag klas 2 zien
  5. }


met & dus;)
Offline Ultimatum - 12/04/2006 19:54 (laatste wijziging 12/04/2006 20:36)
Avatar van Ultimatum PHP expert oke, bedankt het werkt nu goed 
Offline nemesiskoen - 12/04/2006 21:24
Avatar van nemesiskoen Gouden medaille

PHP expert
Het gebruiken van bitwise operators op db results is imo even evil als exploden op db results. Gebruik een veel op veel tabel, zo kan je gemakkelijk zien wie welk recht heeft.

Citaat:
id naam
1 toevoegen
2 bewerken
3 verwijderen

Citaat:
id naam
1 klas1
2 klas2
3 klas3

Citaat:
klas_id recht_id
1 1
1 2
2 1
2 2
2 3
3 1


Nu zie je dat klas1 mag toevoegen en bewerken, klas2 mag toevoegen, bewerken en verwijderen en klas3 mag alleen toevoegen.
Offline Richard - 13/04/2006 08:07
Avatar van Richard Crew algemeen maar nemesiskoen, leg mij eens duidelijk uit waarom bitwise niet zou moeten worden gebruikt? het is sneller, kleiner en net zo veilig...
Offline Thomas - 13/04/2006 09:46 (laatste wijziging 13/04/2006 09:47)
Avatar van Thomas Moderator Een koppeltabel is wellicht beter.

Let er heel goed op dat de rechten bij bitwise vergelijkingen machten van 2 moeten zijn... Als je dit verkeerd aanpakt dan kan iemand ten onrechte toestemming krijgen terwijl dit niet de bedoeling is.
Als je een if-statement hebt die bepaalt of je toegang krijgt tot een onderdeel er als volgt uitziet:

if(a & b)

dan zal elke willekeurige combinatie van a & b die niet 0 oplevert, ervoor zorgen dat het if-statement true oplevert.
Het is wellicht beter om expliciet te controleren of iemand recht X heeft, met X een macht van 2, aldus:

if((a & X) == X)

Als je weet waar je mee bezig bent kan de bitwise-constructie natuurlijk ook prima volstaan.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.211s