Because, when you compares a number with a string, the string is converted in a number; any string which doesn't start with a number is converted to 0, the other to 1, so your comparison is
if 1 == 1 -> true
Replace equal operator == with identical operator === to avoid this issue.
But your code doesn't make sense to me because you're comparing a boolen value (loggedin which can be 0 or 1) with a string which represents a token so you'll always get false. You should change the logic and store ina cookie or in the $_SESSION array the authKey when it is assigned and then perform your comparison against the coockie or the $_SESSION value
Ray Paseur
@Marco: I don't see it that way. Check out this example. That's why I think we are missing an important piece of the puzzle.
<?php // demo/temp_tonelm54_FALSE.php/** * https://www.experts-exchange.com/questions/28958236/not-working-the-way-Id-expect-it.html * * An Example SSCCE * http://sscce.org/ * * Note that there is no session_start() statement in this example. Not needed for this test. * */error_reporting(E_ALL);echo '<pre>';// ASSIGN OUR TEST VARIABLES$authKey = "5f8e4f8b-f7db-4c6c-8beb-0336a7e1b443";$_SESSION['loggedIn'] = "1";// SHOW OUR TEST VARIABLESecho "authKey = " . $authKey . "<br/>";echo "SESSION loggedIn - " . $_SESSION['loggedIn'] . "<br/>";// USE OUR TEST VARIABLESif ($_SESSION['loggedIn'] == $authKey) { echo "T";} else { echo "F";}
One of the thing that "session_start()" does is create or find the file that session data is stored in. While it may not affect this simple demo, it is never a good idea to try to use $_SESSION variables without it. You certainly can't expect to store any $_SESSION variables without it and expect them to be there on a second page.
Ray Paseur
Dave: Agreed, 100%, and that's why I asked about it right at the top.
In any real-world example session_start() would be a common-sense thing to do, but it's not necessary in this instance, and I didn't include it to avoid cluttering up my session with E-E test data. I did, however, make note of this in the script comments, since it's one of those things that requires explanation.
tonelm54
ASKER
Weirdly, my code still doesn't produce the right answer, but when I run yours it does, so must be something weird happening somewhere else thats throwing it off. Its only POC anyways
if 1 == 1 -> true
Replace equal operator == with identical operator === to avoid this issue.
But your code doesn't make sense to me because you're comparing a boolen value (loggedin which can be 0 or 1) with a string which represents a token so you'll always get false. You should change the logic and store ina cookie or in the $_SESSION array the authKey when it is assigned and then perform your comparison against the coockie or the $_SESSION value