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

Reply via email to