Page 1 of 1

malfunction equality operators

Posted: Sat Oct 13, 2007 9:02 am
by kloassie
Hi people,

i have something really weird going on.

i have a html from that posts to a php-file
in the php i have the following:

if($_POST['name'] !== "") {
// some echoing and mysql connecting code
}

at home everything works perfectly, but the stupid thing is
that at my work, the if-statement ALWAYS executes, wether i post a name or not...

when i change it into

if($_POST['name'] != "") {
// some echoing and mysql connecting code
}

the if~ NEVER executes at my work...

both at home as at my work i use phpdev423, so PHP 4.2.3
at my home i have normal Windows XP running,
at my work Windows 2000 with multiple user accounts

anybody can tell me what is causing this problem?

thanks for all help,

Klaas

Posted: Sat Oct 13, 2007 9:09 am
by feyd
Use isset() or empty() instead.

Posted: Sat Oct 13, 2007 10:22 am
by markg85
or is_string() in this case..

Code: Select all

if (is_string(....) && !empty(....))
{

}
that checks to see if it's a string and to see if it's not an empty string.

Posted: Sat Oct 13, 2007 10:35 am
by John Cartwright
markg85 wrote:or is_string() in this case..

Code: Select all

if (is_string(....) && !empty(....))
{

}
that checks to see if it's a string and to see if it's not an empty string.
Actually, is_string() will always evalulate to true on post elements, since all the data are string. Secondly, if the data is missing from the post, is_string() will throw an error, therefore the empty() call should always be first. In this case, only calling empty() is fine.

Posted: Sat Oct 13, 2007 10:57 am
by superdezign
markg85 wrote:or is_string() in this case..
I tend to use is_scalar() instead of is_string(). All scalar values are automatically typecasted into strings when used as a string.