ID:               28711
 Comment by:       imprestavel at gameguru dot com dot br
 Reported By:      sikachu at beezone dot net
 Status:           Open
 Bug Type:         Unknown/Other Function
 Operating System: Windows 2000
 PHP Version:      5.0.0RC3
 New Comment:

Tested with both (4.3.7 and 5RC3) with register_globals On and Off (on
both) and they all had the same behavior
Maybe its some weird thing between php and the server...

Your 4.3.7 server is running IIS5, right?
Maybe it only passes query string to cgi if its not empty...
In that case, the only reason why your script works(while it shouldnt),
is because IIS works how it shouldnt hehe

Anyway, i think you should change isset to empty for cases like the one
you described

But lets wait for someone from the staff to reply...


Previous Comments:
------------------------------------------------------------------------

[2004-06-10 17:48:52] sikachu at beezone dot net

Well ... I used isset() with $QUERY_STRING to check the query all the
time. Also, my server still PHP 4.3.7 and it's at
http://ragnarok.beezone.net . 

On there, If you type in 'http://ragnarok.beezone.net', it will load
itself because the isset($QUERY_STRING) is false! And if I type
something like 'http://ragnarok.beezone.net/?board' That will trigger
the code and redirect to the page we provide !

Can somebody test and confirm that just because my server use cgi
(php.exe) instead of isapi module (php5isapi.dll)?

Thanks anyway, imprestavel. I think if I change the script whole site
to use empty(), it may works. But I sill confuse with this behavior.

------------------------------------------------------------------------

[2004-06-10 09:18:43] imprestavel at gameguru dot com dot br

I think php4 does that too (just tested, but register_globals is off)
Maybe you are confusing isset with empty


"isset -- Determine whether a variable is set
...
Returns TRUE if var exists; FALSE otherwise."


"empty -- Determine whether a variable is empty
...
empty() returns FALSE if var has a non-empty and non-zero value. In
otherwords, "", 0, "0", NULL, FALSE, array(), var $var;, and objects
with empty properties, are all considered empty. TRUE is returned if
var is empty."


You may find that information here:
http://www.php.net/isset
http://www.php.net/empty

Hope it helps

------------------------------------------------------------------------

[2004-06-09 16:46:18] sikachu at beezone dot net

Clearify the bug summary ...

------------------------------------------------------------------------

[2004-06-09 16:44:18] sikachu at beezone dot net

Change the version number in topic from RC2 to RC3 ...

------------------------------------------------------------------------

[2004-06-09 16:42:41] sikachu at beezone dot net

Description:
------------
I upgraded from PHP 4.3.4 to PHP 5.0 RC3 yesterday. When I tried to run
the script that check for the query string and then refresh to the
page, the query string return the invalid value. This behavior I found
only in PHP 5.0 RC3

I'll show you the result with these thing:
echo $QUERY_STRING;
isset($QUERY_STRING);
$QUERY_STRING == "";

For example, assume that the script URL is
http://somewhere.com/index.php

If I call it like this: http://somewhere.com/index.php?foo

echo $QUERY_STRING;    // show foo
isset($QUERY_STRING);  // return true
$QUERY_STRING == "";   // return false

But, here is the problem. If I call it like this:
http://somewhere.com/index.php

echo $QUERY_STRING;    // show ""(nothing)
isset($QUERY_STRING);  // return true  << unexpected
$QUERY_STRING == "";   // return true

The code that I use for test will be in the next section.

My PHP configuration based on php.ini-dist. I changed register_global
to be On, and then add php_mysql & php_mysqli extension to it.

Reproduce code:
---------------
if(isset($QUERY_STRING))
{
        echo "Your query string is defined\n";
}
if($QUERY_STRING == "")
{
        echo "Your query string is null\n";
}
if($QUERY_STRING == " ")
{
        echo "Your query string contain just a space\n";
}

echo "Here is your query string: '".$QUERY_STRING."'";

Expected result:
----------------
Your query string is null
Here is your query string: ''

Actual result:
--------------
Your query string is defined
Your query string is null
Here is your query string: ''


------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=28711&edit=1

Reply via email to