Meer toelaten met SESSION

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Stefan

stefan

07/01/2008 21:23:00
Quote Anchor link
Hey ik heb een ledensysteem met sessions.

Ik heb hem nu beveiligd voor admin's maar ik wil hem ook toegankelijk maken voor medewerkers met een lagere rang. Het ziet er nu zo uit

if(!isset($_SESSION['admin'])) {

Als ik er meerdere door wil laten moet ik dan

if(!isset($_SESSION['admin AND team'])) {

doen ofzo? Maar dat werkt niet. Weet iemand hoe ik die kan oplossen?
Alvast bedankt voor het helpen :)
 
PHP hulp

PHP hulp

06/11/2024 00:55:32
 
Joren de Wit

Joren de Wit

07/01/2008 21:28:00
Quote Anchor link
Geef in een sessievariabele aan welke rang een bepaalde gebruiker heeft. Dus bijvoorbeeld een 0 voor gasten, een 1 voor medewerkers en een 2 voor de admin. Vervolgens kun je dan aan de hand van deze waarde controleren welke rechten iemand heeft.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
if($_SESSION['rang'] >= 2)
{

    // Alleen admin
}
elseif($_SESSION['rang'] >= 1)
{

    // Admin en medewerker
}
else
{
    // Iedereen
}
?>
 
Stefan

stefan

07/01/2008 21:30:00
Quote Anchor link
Dus als ik het goed begrijp staat er, dat als de rang lager is dat hij de rangen daarboven ook doorlaat met dat scriptje?
 
Joren de Wit

Joren de Wit

07/01/2008 21:32:00
Quote Anchor link
De admin heeft rang 2, maar die moet natuurlijk ook toegang hebben als de vereiste rang 1 is. Vandaar dat de rang groter dan of gelijk aan 1 moet zijn...

Van die eerste zou je in principe ook == 2 kunnen maken, aangezien er geen hogere rang dan de admin is.
 
Stefan

stefan

07/01/2008 21:35:00
Quote Anchor link
Het lukt neit helemaal, ik zal even mijn script je sturen

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php

if(!isset($_SESSION['team'])) {

    echo "";
}
else{
    echo ('<img src="http://www.habbowereld.nl/images/v3/staffnieuws.png" border="0" align="left" />');
}

?>


De admin moet dit ook kunnen zien (rang: admin)(team = 5, admin = 6)
Gewijzigd op 01/01/1970 01:00:00 door stefan
 
Joren de Wit

Joren de Wit

07/01/2008 21:38:00
Quote Anchor link
De rang van de ingelogde gebruiker zou wel in $_SESSION['rang'] moeten staan, maar dat controleer je nergens?
 
Stefan

stefan

07/01/2008 21:40:00
Quote Anchor link
Jawel, dat staat in een apart class.php document ;)
Wat ik net al zei als ik je goed begrijp

5 = team
en
6 = admin
 
Joren de Wit

Joren de Wit

07/01/2008 21:41:00
Quote Anchor link
Ja ok, maar in welke variabele heb je dat staan dan? Je zou het zo moeten maken dat je deze sessievariabele aanmaakt tijdens het inloggen, dan bepaal je de rang van de ingelogde gebruiker.

Vervolgens kun je aan de hand van die variabele telkens controleren welke onderdelen wel/niet getoond moeten worden.
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
 
Jan Koehoorn

Jan Koehoorn

07/01/2008 21:43:00
Quote Anchor link
Nog een tip: elke gebruiker een rang toekennen is niet de meest flexibele oplossing. Een gebruiker kan meer dan 1 recht hebben en 1 recht kan toegekend worden aan meer dan 1 gebruiker.

In zo'n geval is de mooiste oplossing om een tabel gebruikers te hebben

gebruikers
------------
id
naam
enz

en een tabel rechten

rechten
--------
id
naam

en een koppeltabel waarin je rechten en gebruikers aan elkaar koppelt:

gebruikers_rechten
----------------------
gebruiker_id
recht_id

Als je een UNIQUE CONSTRAINT aanmaakt voor de combinatie van deze twee id's kun je alle kanten op.
 
Frank -

Frank -

07/01/2008 22:12:00
Quote Anchor link
@Jan: Jouw opzet is niet te beheren, dit levert veiligheidsproblemen op. Maak rollen aan en geef een rol de benodigde rechten. Een gebruiker krijgt vervolgens 1 rol en klaar ben je. Ga nooit op userniveau rechten toekennen, dat is gewoon niet te onderhouden. Tevens ga je nooit extra rechten aan 1 persoon toekennen, dan maak je gewoon een nieuwe rol aan. Mocht dat écht nodig zijn.

Zoek anders ook even op de term RBAC, dat is autoriseren voor gevorderden.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.