On Thu, 2004-01-22 at 00:52, Martin Towell wrote: > > [EMAIL PROTECTED] wrote: > > >>Ok i found something very interesting > > >>, i have a session var setup to check for a groupID which is an > > >>integer, > > >> > > >>if ($_SESSION['groupID']==1) { this was working, then when > > i changed it > > >>to > > >> > > >>if ($_SESSION['groupID']===1) { per recomendation, it does > > not now ! i > > >>was going through my code and changing things, now i fear it may all > > >>break ? > > >> > > > > > > > > > I changed it to if ($_SESSION['groupID']==='1') { and it > > worked, why was > > > that, is what i did before bad practice ? > > > > > > > I think $_SESSION['groupID'] here is considered a string, > > which is going > > to evaluate to 0 (zero) in comparisons. Hence 0 === 1 will return > > false. However, when you enclose the 1 in quotes, it becomes > > a string > > too for comparison, and will evaluate to 0. Someone correct > > me if I am > > mistaken. > > I think the first bit of what you're saying is right, but when '1' is used, > then a string comparison between '0' === '1' is done since both are now > strings (or am I mistaken?).
You are wrong :) His test for $_SESSION['groupID']==1 succeeds because someone probably set the session value of 'groupID' to the string '1'. Now that he is doing a comparison which includes type (===) it fails because a string is not equal to an integer. This is why it succeeds when he changes the test to '1'. What he had before $_SESSION['groupID']==1 is perfectly fine as long as the group id is not meant to be a string. For instance '1abcd' == 1, evaluates to true :) But chances are the app only accepts numerical groupIDs and so the loose check would be safe. HTH, Rob. -- .------------------------------------------------------------. | InterJinn Application Framework - http://www.interjinn.com | :------------------------------------------------------------: | An application and templating framework for PHP. Boasting | | a powerful, scalable system for accessing system services | | such as forms, properties, sessions, and caches. InterJinn | | also provides an extremely flexible architecture for | | creating re-usable components quickly and easily. | `------------------------------------------------------------' -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php