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