Hoi allemaal,
Ik heb een raar probleem (ik heb het ondertussen al opgelost, maar ik begrijp het niet helemaal).
Ik werk met een rechten systeem.
$rechten kan 0 (geen rechten) 1 (aleen lezen en schrijven waar rechten 1 zijn) 2 (zelfde als 1 alleen dan voor 2 en 1) 3 (zelfde als twee maar dan voor drie en 1) 4 (alle rechten) en 5 (administyrator rechten).
Als iemand inlogt, wordt er een cookie geset met een UserID.
Iedere keer dat er een pagina wordt ingeladen worden de rechten uit de mysql database gehaald en bekeken volgens dit stukkie code :
Maar als $tool[Rechten] = 0 dan wordt mijn cookie overschreven en geeft hij de error message.
Ik heb het dus opgelost door de $tool[Rechten] uit de if clause te halen, maar ik vroeg me af hoe php omgaat met een variabele met waarde 0.
Hij ziet hem kennelijk niet als een variabele met een true waarde (terwijl de waarde dus wel degelijk 0 is (en dus true is...))
Weet iemand hoe dit zit?
Ik heb een raar probleem (ik heb het ondertussen al opgelost, maar ik begrijp het niet helemaal).
Ik werk met een rechten systeem.
$rechten kan 0 (geen rechten) 1 (aleen lezen en schrijven waar rechten 1 zijn) 2 (zelfde als 1 alleen dan voor 2 en 1) 3 (zelfde als twee maar dan voor drie en 1) 4 (alle rechten) en 5 (administyrator rechten).
Als iemand inlogt, wordt er een cookie geset met een UserID.
Iedere keer dat er een pagina wordt ingeladen worden de rechten uit de mysql database gehaald en bekeken volgens dit stukkie code :
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| <? if($Login) { // Cookie $deel = explode(";", $Login); $UserID = $deel[0]; $Loggedin = $deel[1]; $SQL = "SELECT Username, Password, Rechten, Activated FROM $table[Users] WHERE UserID = '$UserID'"; $tool = MakeTool($SQL); // de functie die $SQL naar mysql stuurt en de rows als array eruit fetched if($tool[Username]&&$tool[Password]&&$tool[Activated]=="Yes"&&$rechten) { $username = $tool[Username]; $password = $tool[Password]; $rechten = $tool[Rechten]; } else { setcookie("Login", "$UserID;$time", $time - 3600); start('Ongeldig Login Cookie!'); echo "<font class=error> Sorry, maar we hadden te maken met een Invalid Login Cookie. Het cookie is ondertussen vernietigd.<br> Je zult opnieuw moeten inloggen. Hier is helaas nog niets aan te doen.</font>"; finish(); exit(); } } ?> |
Maar als $tool[Rechten] = 0 dan wordt mijn cookie overschreven en geeft hij de error message.
Ik heb het dus opgelost door de $tool[Rechten] uit de if clause te halen, maar ik vroeg me af hoe php omgaat met een variabele met waarde 0.
Hij ziet hem kennelijk niet als een variabele met een true waarde (terwijl de waarde dus wel degelijk 0 is (en dus true is...))
Weet iemand hoe dit zit?