<?php
// include/require hier evt nog andere zaken
require ("connect.php");
// we willen op deze pagina gebruik maken van beveiliging mbv sessies,
// dus includen (requiren) we session.php
require("session.php");
?>
<html>
<head>
<title>sessies · voorbeeld</title>
</head>
<body>
<?php
/*
we gaan hier kijken of de gebruiker is ingelogd, en welk
user level de gebruiker heeft. Op grond daarvan laten we
bepaalde delen al dan niet zien.
Een gebruikerslevel is een getal wat aangeeft hoeveel
"macht" je hebt. Vaak is het zo: hoe hoger het getal, hoe
meer je mag.
bijvoorbeeld:
Voor een bepaalde bewerking heb je gebruikers-
niveau 1 nodig, maar voor een andere bewerking heb je niveau
2 nodig. Een gebruiker die beide bewerkingen mag uitvoeren
heeft gebruikersniveau 1+2 = 3. MAAR: Een gebruiker die om
een of andere reden alleen de tweede bewerking mag uitvoeren
heeft gebruikersniveau 0+2 = 2. Dus je telt de nummers die
bij bepaalde rechten horen bij elkaar op.
Het nummer dat het recht geeft op een bepaalde bewerking is
altijd een macht van 2.
bijvoorbeeld:
recht #1 (bv inloggen) heeft gebruikers niveau 2^0 = 1
recht #2 (bv je eigen info veranderen) heeft gebr. niveau 2^1 = 2
recht #3 (bv nieuws toevoegen) heeft gebruikers niveau 2^2 = 4
recht #4 (bv members toevoegen) heeft gebruikersniveau 2^3 = 8
enz.
Iemand die al deze bewerkingen mag uitvoeren heeft dus
gebruikersniveau 1+2+4+8 = 15 (of 2^4 - 1)
Iemand die alleen recht #1 en recht #3 heeft, heeft
dus gebruikersniveau 1+4 = 5
*/
// controle op ingelogd zijn:
if(isset($_SESSION['suser'])) { ?>
user <b><?= $_SESSION['suser'] ?></b> is logged in.<br />
<?php
/*
vervolgens kijken we naar het userlevel, we vergelijken
bitsgewijs het gebruikerslevel - dit doen we met behulp van
een enkele '&' (de bitwise comparator)
*** LET OP ***
Enkel controleren met & is niet genoeg !
Stel dat je level 9 moet hebben voor een bepaalde bewerking, en je hebt
maar level 1. 1 & 9 is gelijk aan 1, en dan zou if(1 & 9) { ... } true opleveren
Je moet dus expliciet controleren of je level hoog genoeg is.
*/
if(($_SESSION['slevel'] & 1) == 1) {
// voer code uit behorend bij recht #1
?>
Je hebt recht #1.<br />
<?php
} else {
// geef een melding dat je de acties
// behorend bij recht #1 niet mag uitvoeren
?>
Je hebt recht #1 NIET.<br />
<?php
}
if(($_SESSION['slevel'] & 2) == 2) {
// voer code uit behorend bij recht #2
?>
Je hebt recht #2.<br />
<?php
} else {
?>
Je hebt recht #2 NIET.<br />
<?php
}
if(($_SESSION['slevel'] & 4) == 4) {
// voer code uit behorend bij recht #3
?>
Je hebt recht #3.<br />
<?php
} else {
?>
Je hebt recht #3 NIET.<br />
<?php
}
if(($_SESSION['slevel'] & 8) == 8) {
// voer code uit behorend bij recht #4
?>
Je hebt recht #4.<br />
<?php
} else {
?>
Je hebt recht #4 NIET.<br />
<?php
}
// et cetera
?>
<a href="logout.php">uitloggen</a><br />
<?php
} else {
?>
Je bent op dit moment niet ingelogd.<br />
<a href="login.php">inloggen</a><br />
<?php
}
?>
</body>
</html>