PHP Filter, how to filter input array
I am using PHP filter to perfom basic sanitization and validation of form data.
The principle problem I am having is that I mark my form up so that all the data is in one array for the POST input. e.g. form fields, page[name], page[slug], p开发者_如何学Goage[body], page[status], etc.
Using the following:
filter_input(INPUT_POST, 'page[name]', FILTER_SANITIZE_STRING);
OR
filter_input(INPUT_POST, "page['name']", FILTER_SANITIZE_STRING);
I am unable to access the variable. Can someone please tell me the correct name to use to access array data using filter_input()
I don't think that you can access the single value (easily, as you want), however you could just filter the page
array and get the value that you want.
$page = filter_input(INPUT_POST, 'page', FILTER_SANITIZE_STRING, FILTER_REQUIRE_ARRAY);
if (array_key_exists('name', $page)) {
$name = $page['name'];
}
Or, if you're OK with losing the ability to work with the raw input then you could just use:
if (isset($_POST['page']['name'])) {
$name = filter_var($_POST['page']['name'], FILTER_SANITIZE_STRING);
}
Both, however, are pretty ugly.
How about
$_POST['page'] = filter_var_array($_POST['page'], FILTER_SANITIZE_STRING);
精彩评论