login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Functie retourneert bij 3 false (Opgelost)

Offline nick5556 - 28/02/2010 10:47
Avatar van nick5556PHP beginner Hallo,

Ik heb een eigen administratie systeem opgebouwd met 4 gebruikers niveau's. Nu heb ik een functie die controleerd welk gebruikersniveau je bent, zodat je geen administratoren kan aanmaken die een hoger level hebben als dat je zelf bent.

Hier is de functie:
  1. public function checkType ($type) {
  2. if ($type >= $_SESSION ['USER_TYPE']) {
  3. return true;
  4. } else {
  5. return false;
  6. }
  7. }


Dit is de manier hoe ik hem gebruik:
  1. <? if($ealogin -> checkType(2)) { ?><option value="1">Admin</option><? } ?>
  2. <? if($ealogin -> checkType(3)) { ?><option value="2">Site-admin</option><? } ?>
  3. <? if($ealogin -> checkType(4)) { ?><option value="3">Super-admin</option><? } ?>
  4. <? if($ealogin -> checkType(4)) { ?><option value="4">Webmaster</option><? } ?>


De 'Site-admin' laat mijn browser pas zien als ik een ! voor $ealogin zet, dat betekend false. De rest laat hij wel zien. Ik weet zeker dat ik gebruikersniveau 4 heb.

12 antwoorden

Gesponsorde links
Offline Koen - 28/02/2010 10:58
Avatar van Koen PHP expert Om te beginnen kan je die functie al een pak gemakkelijker en korter schrijven:
  1. public function checkType($type)
  2. {
  3. return $type >= $_SESSION['USER_TYPE'];
  4. }

Die functie retourneert true wanneer jouw level kleiner dan of gelijk is aan $type, uiteraard zal voor zowel 2 als 3 deze functie false retourneren omdat deze beiden kleiner zijn dan 4. 
Offline nick5556 - 28/02/2010 11:15 (laatste wijziging 28/02/2010 11:18)
Avatar van nick5556 PHP beginner Nope. 2 gaf true, 3 gaf false, en 4 gaf true. Eventjes de code veranderen ;)

Code veranderd, ik krijg nogsteeds deze als return:
  1. Moderator
  2. Super-admin
  3. Webmaster
Offline Koen - 28/02/2010 11:24
Avatar van Koen PHP expert Wat is je huidige code dan? Want ik zie nergens moderator staan in je script.
Offline nick5556 - 28/02/2010 11:26
Avatar van nick5556 PHP beginner Foutje .

Ik krijg
  1. Admin
  2. Super-admin
  3. Webmaster


Sorry!
Offline Koen - 28/02/2010 11:34
Avatar van Koen PHP expert Wat ik eerder al zei klopt: http://www.sitemasters.be/koen/nick.php

Doe eens var_dump($_SESSION['USER_TYPE']); ?
Offline nick5556 - 28/02/2010 11:37
Avatar van nick5556 PHP beginner string(1) "4"
Deze krijg ik terug.
Offline Koen - 28/02/2010 11:40
Avatar van Koen PHP expert In elk geval zou het wel moeten werken indien je dit gebruikt:
  1. public function checkType($type)
  2. {
  3. return $type <= $_SESSION['USER_TYPE'];
  4. }
Offline nick5556 - 28/02/2010 12:13
Avatar van nick5556 PHP beginner Het werkt niet. Ik snap er zelf even helemaal niets meer van. Hoe kan het zijn, dat als ik 'checkType(2)' doen dat het script true terug geeft, bij 3 false, en bij 4 true..

Ik snap het niet meer.
Offline Koen - 28/02/2010 12:15
Avatar van Koen PHP expert Aan de code die je liet zien is niets mis, ik zal meer code nodig hebben om je verder te kunnen helpen.
Offline nick5556 - 28/02/2010 13:04
Avatar van nick5556 PHP beginner http://plaatscode.be/138768/ admin class..
http://plaatscode.be/138769/ Alles tussen de body tags van de pagina zelf.
ob_start() en session_start() staan bovenaan.
Offline Koen - 28/02/2010 13:16 (laatste wijziging 28/02/2010 13:22)
Avatar van Koen PHP expert Haal die var_dump() maar weer weg rond je $_SESSION['USER_TYPE'], het was niet de bedoeling om dat daar te zetten. Als het daarna nog niet werkt, probeer dan dit eens:
  1. <? if($_SESSION['USER_TYPE'] >= 2) { ?><option value="1">Admin</option><? } ?>
  2. <? if($_SESSION['USER_TYPE'] >= 3) { ?><option value="2">Site-admin</option><? } ?>
  3. <? if($_SESSION['USER_TYPE'] >= 4) { ?><option value="3">Super-admin</option><? } ?>
  4. <? if($_SESSION['USER_TYPE'] >= 4) { ?><option value="4">Webmaster</option><? } ?>

Offline nick5556 - 28/02/2010 13:19 (laatste wijziging 28/02/2010 16:01)
Avatar van nick5556 PHP beginner Op die manier werkt het wel, maar waarom werkt het via de functie dan niet als de functie precies het zelfde doet?

EDIT:
Als ik de functie zo maak dan doet hij het ook niet:
  1. public function checkType ($type) {
  2. return $_SESSION['USER_ID'] >= $type;
  3. }


EDIT2:
Als ik gebruikers niveau 3 heb, retourneert de functie wel true, ik weet niet of het nuttige informatie is, maar ik meld het eventjes 


EDIT3:
Het werkt, alleen vraag niet hoe  
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.241s