[php] inloggen niveau's dilemma

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • ViNyL
  • Registratie: Augustus 2001
  • Niet online
Ik ben met een pakket bezig waar mee op verschillende niveau's gewerkt kan worden.

Nu heb ik 5 niveau's waarbij 1 het laagste is.

Ik heb 3 niveaus (2,3,4) die bij dezelfde functionaliteit kunnen. Op het moment check ik het zo dat als je niveau 5 bent je in principe ook bij de interface van niveau 2 kan komen.

Dit is vrij makkelijk op te lossen

PHP:
1
2
3
4
5
6
if ($niveau > 2) {
echo "geen toegang";
}
if ($niveau < 2) {
echo "geen toegang";
}

Maar dat zou betekenen dat ik de bestanden die normaal gedeeld worden door mensen met meerdere accounts in mappen moet zetten voor de verschillende niveau's en zo dus dubbele bestanden heb die hetzelfde doen.

Is het verstandig om de niveau's in gescheiden mappen te zetten met als gevolg dat ik dan maar dubbele bestanden heb ik is dit slimmer op te lossen?

Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-09 08:50

gorgi_19

Kruimeltjes zijn weer op :9

Waarom werk je met niveau's en niet met rollen?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

  • ViNyL
  • Registratie: Augustus 2001
  • Niet online
Nou ja een rol is hier ongeveer hetzelfde als de rollen. Maar het is maar een vrij simpel systeem.

Maar het zit zo dat iemand met niveau 2 kan bijvoorbeeld een afdelingnaam aanpassen maar iemand met niveau 4 ook. Hoe hoger het niveau hoe meer opties je "erft" van de lagere niveau's.

Acties:
  • 0 Henk 'm!

  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 14:27
Ik snap niet helemaa wat je bedoelt, je kunt toch gewoon zeggen:

code:
1
2
3
4
5
6
7
8
9
10
11
if ($niveau > 3) 
{
  echo 'Dit is content die alleen zichtbaar is voor niveau 4 en 5';
}

// of 

if ($niveau > 3) 
{
  include ('contentVoorNiveau4OfHoger.inc.php'
}

Regeren is vooruitschuiven


Acties:
  • 0 Henk 'm!

  • ViNyL
  • Registratie: Augustus 2001
  • Niet online
Nou niveau 1 mag verder nergens komen.
Niveau 2 wel, deze mag taken uitvoeren die 3 en 4 ook kunnen. Maar niveau 5 mag weer alleen maar op een aantal pagina's komen waar de andere niveau's niet bij mogen.

Maar is het niet gewoon netter of dan alle niveau's een eigen directory oid te geven waar de content voor de niveau's in staan? Ook al krijg je dan dubbele bestanden?

Als ik check op of een niveau hoger is, maar ik wil niveau 5 niet op niveau 4 pagina's laten dan kan dit niet toch.

[ Voor 17% gewijzigd door ViNyL op 13-07-2004 14:32 ]


Acties:
  • 0 Henk 'm!

  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 14:27
Als je systeem verder af is zou ik het jezelf niet al te moeilijk maken en gewoon bovenaan elke pagina een regeltje code zetten dat het niveau checkt.

PHP:
1
2
3
if ($niveau != 4) { die ("geen toegang"); } //voor alleen niveau 4 heeft toegang.

if($niveau < 3) { die ("geen toegang"); } // niveau 3 en hoger hebben toegang.


Dit is geenszins een elegante oplossing, maar wel makkelijk als de rest van je systeem al af is.

Regeren is vooruitschuiven


Acties:
  • 0 Henk 'm!

  • ViNyL
  • Registratie: Augustus 2001
  • Niet online
ik heb de niveau checks in losse bestanden staan dus het is zo aangepast.

Ik heb nu in alle pagina's waar niveau 2 tm 4 in mogen het volgende:

PHP:
1
2
if ($niveau < 2) { die ("geen toegang"); }
if($niveau > 4) { die ("geen toegang"); }


Denk dat ik het maar zo laat verder.

[ Voor 15% gewijzigd door ViNyL op 13-07-2004 14:47 ]


Acties:
  • 0 Henk 'm!

Verwijderd

[klein beetje offtopic]

Dat kan je sowieso ombouwen tot onderstaande; lijkt me net wat netter....
PHP:
1
if ($niveau < 2 || $niveau > 4) { die ("geen toegang"); }

[ Voor 17% gewijzigd door Verwijderd op 13-07-2004 15:15 ]


Acties:
  • 0 Henk 'm!

  • OkkE
  • Registratie: Oktober 2000
  • Laatst online: 04-09 08:16

OkkE

CSS influencer :+

Is het misschien wel netter om dan geen die(); te gebruiken, maar ze door te sturen naar een pagina waar staat dat ze dr nie op mogen. :)
PHP:
1
2
3
4
if( $niveu < 2 )
{
Header( "Location: geentoegang.htm" );
}

“The best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer.”
QA Engineer walks into a bar. Orders a beer. Orders 0 beers. Orders 999999999 beers. Orders a lizard. Orders -1 beers.


Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
Verwijderd schreef op 13 juli 2004 @ 15:15:
[klein beetje offtopic]

Dat kan je sowieso ombouwen tot onderstaande; lijkt me net wat netter....
PHP:
1
if ($niveau < 2 || $niveau > 4) { die ("geen toegang"); }
Zie ook de != operator...

Acties:
  • 0 Henk 'm!

  • Knutselsmurf
  • Registratie: December 2000
  • Laatst online: 20-09 22:57

Knutselsmurf

LED's make things better

Zoals je nu bezig bent, maakt je niveau 2,3 en 4 helemaal gelijk. Zou het niet beter zijn om daar alvast onderscheid in te maken?
Je zou bijvoorbeeld het volgende kunnen doen:
PHP:
1
2
$niveau=3;
require_once('checkniveau.inc.php');

Waarbij in checkniveau wordt gekeken of de gebruiker wel voldoende niveau beschikt.

- This line is intentionally left blank -


Acties:
  • 0 Henk 'm!

  • ViNyL
  • Registratie: Augustus 2001
  • Niet online
Nee niet gelijk, ik heb pagina's waar ALLEEN niveau 2, 3 of 4 op mag. De gedeelde pagina's bevatten een check om te kijken of het niveau 2 tm 4 is.

Trouwens die niveau check wordt al gedaan in het script wat checked of de gebruikers ingelogd is. Vervolgens kijk ik op de pagina's zelf of het niveau hoog of laag genoeg is om op een pagina te mogen komen.

[ Voor 44% gewijzigd door ViNyL op 13-07-2004 17:50 ]


Acties:
  • 0 Henk 'm!

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Is het misschien een idee om sharing ook op te delen in 5 niveaus? Je kan dan 5 share-mappen aanmaken en gebruikers kunnen dan aangeven op welk niveau ze een bestand sharen. Afhankelijk van het gekozen level plaats je hem dan in 1 van de 5 share-mappen en je maakt een browse-shared pagina oid aan die alle share-mappen doorfietst waar je met jouw gebruikersniveau in zou mogen kijken.
Je presenteert dit als 1 map naar de gebruikers toe.

Ben ik een beetje duidelijk? En heb ik het probleem goed begrepen?

Acties:
  • 0 Henk 'm!

  • ViNyL
  • Registratie: Augustus 2001
  • Niet online
Hm het is een pakket waarbij 5 soorten gebruikers zijn.

niveau 2/3/4 zijn een soort power users (waarbij 4 de meeste opties heeft). Als ze bv een afdeling naam willen wijzigen komen ze allen op dezelfde pagina uit, beetje dubbel namelijk om deze voor ieder niveau apart neer te zetten in een map oid. Dus moeten er 3 niveau's in kunnen toch?

Dit is dan inderdaad het mooiste:
PHP:
1
if ($niveau < 2 || $niveau > 4) { die ("geen toegang"); }


Maar mijn vraag was of dit wel zo netjes was. Moet ik dan toch voor ieder niveau een map maken en daar dan dezelfde bestanden in plaatsen? Zodat ze dus niet op elkaars pagina's komen in principe.

Acties:
  • 0 Henk 'm!

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Hmm, ik had je probleem dus inderdaad verkeerd begrepen. Persoonlijk denk ik dat je oplossing prima is, gezien het pakket waar je mee werkt. Echter het pakket lijkt niet helemaal geschikt voor wat je ermee wilt doen, maar goed, dat is weer een ander verhaal nietwaar? ;)

Acties:
  • 0 Henk 'm!

  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 14:27
ViNyL schreef op 13 juli 2004 @ 18:02:

Maar mijn vraag was of dit wel zo netjes was. Moet ik dan toch voor ieder niveau een map maken en daar dan dezelfde bestanden in plaatsen? Zodat ze dus niet op elkaars pagina's komen in principe.
Ik vindt het netter om het allemaal in dezelfde map te houden. Mocht je wat willen wijzigen dan hoef je maar 1 bestand te wijzigen.
Over het algemeen heb ik het idee dat je 'dubbele code' altijd moet vermijden. Dat is makkelijker updaten, maar het maakt het voor anderen ook makkelijker je code te lezen.

Regeren is vooruitschuiven


Acties:
  • 0 Henk 'm!

  • ViNyL
  • Registratie: Augustus 2001
  • Niet online
ja idd, dat is zo.
Hmm, ik had je probleem dus inderdaad verkeerd begrepen. Persoonlijk denk ik dat je oplossing prima is, gezien het pakket waar je mee werkt. Echter het pakket lijkt niet helemaal geschikt voor wat je ermee wilt doen, maar goed, dat is weer een ander verhaal nietwaar?
Het pakket is uitermate geschikt het is namelijk op maat geschreven ipv gekocht wat veel onnodige dingen overleverde en niet helemaal aansloot. Ik ben nu alleen nog met het inlog systeem aan het hannessen hoe ik dit aan wil pakken. Maar ik denk dat het zo prima is.

Acties:
  • 0 Henk 'm!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

gorgi_19 schreef op 13 juli 2004 @ 14:22:
Waarom werk je met niveau's en niet met rollen?
Rollen zijn voor 95% van de websites vet overkill. Ik schrijf professioneel ook role-based securitysystemen, maar voor de homepage van m'n familie had ik ook echt geen zin om een complexer systeem dan een simpele integer open te trekken voor 'securitylevel'.

Professionele website nodig?


Acties:
  • 0 Henk 'm!

  • ViNyL
  • Registratie: Augustus 2001
  • Niet online
Het is wel een pakket wat in een organisatie gebruikt gaat worden, maar zo kleinschalig dat ik role based wat te ver vond gaan. Vandaar idd dat ik gewoon met niveau's werk.

Acties:
  • 0 Henk 'm!

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Maar het zijn geen niveaus, want het hoogste "niveau" heeft minder (of andere)rechten dan het niveau er direct onder om sommige onderdelen.

Ikzelf werk meestal met iets dat ik het beste als security switches kan omschrijven. Je bepaalt gewoon een aantal hoofdonderdelen en voor elk onderdeel maak je een boolean kolom aan in de user tabel.

Simpel en best overzichtelijk mits het aantal onderdelen te overzien is.

Acties:
  • 0 Henk 'm!

  • stekkel
  • Registratie: Augustus 2001
  • Laatst online: 17-09 08:05
Ik zou dit toch anders implementeren.

Met behulp van binary operators kan je namelijk heel handig een rechten systeem implementeren.

voorbeeld:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
// de groepen
define('GUEST',1);
define('USER',2);
define('POWERUSER',4);
define('ADMIN',8);
// test user die lid is van 2 groepen
$testuser_rights = USER + POWERUSER;

if (POWERUSER & $testuser_rights) {
    // access
} else {
   // no access
}
Pagina: 1