tonelm54
asked on
== not working the way Id expect it
Im trying to test if a variable is the same as another vairable:-
Which its saying it is, however it shouldn't, to debug I added:-
Which returns:-
And then to test further I used:-
Which returns T.
I dont understand why its returning that it is the same, when it isnt.
Any ideas how to fix it and why its happening?
if ($_SESSION['loggedIn'] == $authKey) {
Which its saying it is, however it shouldn't, to debug I added:-
echo "authKey = " . $authKey . "<br/>";
echo "SESSION loggedIn - " . $_SESSION['loggedIn'] . "<br/>";
Which returns:-
authKey = 5f8e4f8b-f7db-4c6c-8beb-0336a7e1b443
SESSION loggedIn - 1
And then to test further I used:-
if ($_SESSION['loggedIn'] == $authKey) {
echo "T";
} else {
echo "F";
}
Which returns T.
I dont understand why its returning that it is the same, when it isnt.
Any ideas how to fix it and why its happening?
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
@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.
Please see: https://iconoun.com/demo/temp_tonelm54_FALSE.php
https://www.experts-exchange.com/articles/2391/PHP-Client-Registration-Login-Logout-and-Easy-Access-Control.html
Please see: https://iconoun.com/demo/temp_tonelm54_FALSE.php
<?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 VARIABLES
echo "authKey = " . $authKey . "<br/>";
echo "SESSION loggedIn - " . $_SESSION['loggedIn'] . "<br/>";
// USE OUR TEST VARIABLES
if ($_SESSION['loggedIn'] == $authKey) {
echo "T";
} else {
echo "F";
}
Outputs:
authKey = 5f8e4f8b-f7db-4c6c-8beb-0336a7e1b443
SESSION loggedIn - 1
F
That aside, the correct (working) design for PHP client authentication is shown in this article:https://www.experts-exchange.com/articles/2391/PHP-Client-Registration-Login-Logout-and-Easy-Access-Control.html
Wooops, I see...
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.
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.
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.
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