I'm following some exercises about data validation and decided to mess around with the filter_input()
function. When I try to run this code:
$_POST['var'] = 10;
$filtered = filter_input(INPUT_POST, 'var', FILTER_VALIDATE_FLOAT);
var_dump($filtered);
var_dump($filtered)
returns NULL. I know the code works if $_POST['var']
is assigned a value by submitting a form, but I'm just wondering why manually assigning a value to the $_POST[]
array doesn't return float(10)
?
filter_input()
doesn't read from the _POST/_GET/_COOKIE/_SERVER/_ENV superglobal arrays. It reads from the original sources of those values respectively (which are also used to populate the superglobals).
This is because INPUT_POST
works on the original POST values, modifications to them in your script have no effect.
However, if you want to filter that var you can use:
filter_var($_POST['var'], FILTER_VALIDATE_FLOAT);
If you want to set a default input value and filter, use filter_var
. Because filter_input doesn't filter current values of superglobals.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With