Hallo,

In mijn loginscript zit de mogelijkheid om user levels te difineren.
Nu wil ik dat iedereen met de juiste rechten toegang krijgt vanaf het laagste niveau.

Dus b.v. isMember is mijn laagste gebruikers niveau en isAdmin het hoogste.
De Admin moet nu ook een lager account hebben om de Member pagina's te kunnen zien, en dat wil ik niet.
Ik dacht dat met IF en OR te kunnen oplossen maar tot opheden zonder succes.

Dit is wat ik heb:
<?
if (!$session->isAdmin) || (!$session->isMember()) {
header("Location: ../secure/main.php");
}
else{
}
?>

Kan iemand mij hier mee helpen?

Alvast bedankt.
Dat een admin niet op de pagina mag komen word hier bepaald:

<?php

include("../secure/include/session.php");

if(!$session->isMember()) {
header("Location: ../secure/main.php");
}
else{
}

?>

En in session.php staan de defenities:

<?
function isAdmin(){
return ($this->userlevel == ADMIN_LEVEL ||
$this->username == ADMIN_NAME);
}


function isMember(){
return ($this->userlevel == MEMBER_LEVEL ||
$this->username == MEMBER_NAME);
}
?>
session.php is natuurlijk veel groter maar hier gaat het om.

hopelijk is dat een antwoord op je vraag?
isAdmin()............... ;-)


Probeer is:
if(!$session->isAdmin() or $session->isMember()){
Wat volgens mij al fout gaat is dat je gebruikers door gaat sturen naar een 'secured page' als ze daartoe gemachtigd zijn. Dus als ik niet gemachtigd ben maar de URL van de 'secured page' weet dan kan ik daar gewoon naar toe. Immers voer je de controle niet op de beveiligde pagina zelf?

Als het klopt wat ik zeg dan gaat het dus niet goed. Je moet altijd de controle op de beveiligde pagina uitvoeren:

functions.php:
<?php
define('ROLE_MEMBER', 2);
define('ROLE_ADMIN', 4);

function accessLevel($level)
{
if($GLOBALS['user']->getRole() < $level) // $GLOBALS['user']->getRole() geeft de bevoegdheid van de gebruiker. kan dus 0 zijn voor niet ingelogd, 2 voor member en 4 voor admin.
{
header("Location: login.php");
exit;
}
}
?>

beveiligde pagina's voor ROLE_MEMBER en hoger:
<?php
include_once 'functions.php';
accessLevel(ROLE_MEMBER);

// inhoud van de pagina
?>

beveiligde pagina's voor ROLE_ADMIN:
<?php
include_once 'functions.php';
accessLevel(ROLE_ADMIN);

// inhoud van de pagina
?>
Frank,

allereerst bedankt voor je oplossing, dit is wat ik zocht.

en de controle vond natuurlijk wel plaats op elke "beveiligde" pagina maar ik kon simpel weg als admin niet naar die pagina maar wel als member.

case closed.

nogmaals bedankt allemaal voor de hulp.

Reageren