Thursday, February 25, 2016

PHP - Comparing String to Integer gives strange results




I have url
SITAview_pdf.php?&guide=wk
In PHP, I have
 $guide = $_GET['guide'];
When I tried to compare 0=='wk', the statement  is true!

From PHP manual:

String conversion to numbers
When a string is evaluated in a numeric context, the resulting value and type are determined as follows.
The string will be evaluated as a float if it contains any of the characters '.', 'e', or 'E'. Otherwise, it will be evaluated as an integer.
The value is given by the initial portion of the string. If the string starts with valid numeric data, this will be the value used. Otherwise, the value will be 0 (zero). Valid numeric data is an optional sign, followed by one or more digits (optionally containing a decimal point), followed by an optional exponent. The exponent is an 'e' or 'E' followed by one or more digits.

We can  use triple equals instead of a double equals. This ensures that what you are comparing is a string that contains the digit zero only, and prevents any type conversion.
such as 0==='wk'
For simplify code, I used
SITAview_pdf.php?&guide=3
to fix the problem

No comments:

Post a Comment