Toon posts:

[php] Als $ = 0 then $ bestaat niet?

Pagina: 1
Acties:

Verwijderd

Topicstarter
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 :
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]&amp;&amp;$tool[Password]&amp;&amp;$tool[Activated]=="Yes"&amp;&amp;$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?

  • Grum
  • Registratie: Juni 2001
  • Niet online
rechtstreeks uit http://www.e-gineer.com/articles/php-hackers-paradise-revisited.phtml
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?
echo "<p>undefined variable is".($a == '' ? '' : ' not')." equal to empty string";       // equal
echo "<p>false is".(false == '' ? '' : ' not')." equal to empty string";                 // equal
echo "<p>number zero is".(0 == '' ? '' : ' not')." equal to empty string";               // equal
echo "<p>string zero is".('0' == 0 ? '' : ' not')." equal to number zero";               // equal
echo "<p>string foo is".('foo' == 0 ? '' : ' not')." equal to number zero";              // equal
echo "<p>string foo123 is".('foo123' == 0 ? '' : ' not')." equal to number zero";        // equal
echo "<p>string 123 is".('123' == 0 ? '' : ' not')." equal to number zero";              // not equal (123 != 0)
echo "<p>string 123foo is".('123foo' == 0 ? '' : ' not')." equal to number zero";        // not equal (123 != 0)
echo "<p><br>";
echo "<p>undefined variable is".($a === '' ? '' : ' not')." identical to empty string";  // not identical
echo "<p>false is".(false === '' ? '' : ' not')." identical to empty string";            // not identical
echo "<p>number zero is".(0 === '' ? '' : ' not')." identical to empty string";          // not identical
echo "<p>string zero is".('0' === 0 ? '' : ' not')." identical to number zero";          // not identical
echo "<p>string foo is".('foo' === 0 ? '' : ' not')." identical to number zero";         // not identical
echo "<p>string foo123 is".('foo123' === 0 ? '' : ' not')." identical to number zero";   // not identical
echo "<p>string 123 is".('123' === 0 ? '' : ' not')." identical to number zero";         // not identical
echo "<p>string 123foo is".('123foo' === 0 ? '' : ' not')." identical to number zero";   // not identical
?>

Verwijderd

Topicstarter
Thanx dude!