ID: 36799
Updated by: [EMAIL PROTECTED]
Reported By: cleo at anarki dot dk
-Status: Open
+Status: Bogus
Bug Type: *General Issues
Operating System: WinXP, Mandriva Linux 2006
PHP Version: 5.1.2
New Comment:
$h = 25;
$res = (($h>=0) and ($h<=23));
Previous Comments:
------------------------------------------------------------------------
[2006-03-20 17:47:15] cleo at anarki dot dk
Description:
------------
Consider the following piece of code:
$res= ($h>=0) and ($h<=23);
It could be used to determine if a user has submitted an hour between 0
and 23.
However, if the user enters 25, then the function evaluates to
true!!!!
If you reverse the order of the operands like this:
$res = ($h<=23) and ($h>=0);
...then a $h value of 25 will make the function evaluate to false.
But now -1 will make it evaluate to true!
So clearly, this must be a major bug.
Best regards
Claus Holm, Copenhagen, Denmark
Reproduce code:
---------------
<? if (isset($_POST['test'])) {
$hours= $_POST['e_hours'];
$hours= (integer)$hours;
echo "You entered $hours <br>";
echo 'Now we test: ($hours>=0) and ($hours<=23)<br>';
$test1= ($hours>=0) and ($hours<=23);
echo $test1 ? "ok" : "nope";
echo "<br>";
echo 'And now we test: ($hours<=23)and($hours>=0)<br>';
$test2= ($hours<=23) and ($hours>=0);
echo $test2 ? "ok" : "nope";
}
else {
?> Input an hour between 0 and 23:<br>
<FORM action="<?=$_SERVER['PHP_SELF']?>" method="post">
<INPUT type="text" name="e_hours" value=""><br>
<INPUT type="submit" name="test" value="Run test">
</form>
<?}
?>
Expected result:
----------------
If the value 25 is entered, then I should see this:
You entered 25
Now we test: ($hours>=0) and ($hours<=23)
nope
And now we test: ($hours<=23) and ($hours>=0)
nope
Actual result:
--------------
You entered 25
Now we test: ($hours>=0) and ($hours<=23)
ok
And now we test: ($hours<=23) and ($hours>=0)
nope
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=36799&edit=1