Getting variable from form:
Sending over the wire via HTTP, everything is a string. It's up to your server to decide that "1" should be 1
.
I'd use (int)$_POST['a']
to convert it to an integer.
if you prefer mantain a wide type compatibility and preserve input types other than int (double, float, ecc.) i suggest something like this:
$var = is_numeric($_POST['a'])?$_POST['a']*1:$_POST['a'];
You will get:
$_POST['a'] = "abc"; // string(3) "abc"
$_POST['a'] = "10"; // int(10)
$_POST['a'] = "10.12"; // float(10.12)
No. HTTP only deals with text (or binaries).
You have to convert it.
// convert the $_POST['a'] to integer if it's valid, or default to 0
$int = (is_numeric($_POST['a']) ? (int)$_POST['a'] : 0);
You can use is_numeric to check, and php allows casting to integer type, too.
For actual comparisons, you can perform is_int.
Update
Version 5.2 has filter_input which may be a bit more robust for this data type (and others):
$int = filter_input(INPUT_POST, 'a', FILTER_VALIDATE_INT);
I chose FILTER_VALIDATE_INT
, but there is also FILTER_SANITIZE_NUMBER_INT
and a lot more--it just depends what you want to do.