2010-05-03 8 views
16

J'utilise le filtre PHP pour effectuer la désinfection de base et la validation des données de formulaire.PHP Filter, comment filtrer le tableau d'entrée

Le problème principal que j'ai est que je marque ma forme de sorte que toutes les données sont dans un tableau pour l'entrée POST. par exemple. champs de formulaire, page [nom], page [slug], page [body], page [état], etc.

en utilisant:

filter_input(INPUT_POST, 'page[name]', FILTER_SANITIZE_STRING); 
OR 
filter_input(INPUT_POST, "page['name']", FILTER_SANITIZE_STRING); 

Je ne peux pas accéder à la variable. Quelqu'un peut-il s'il vous plaît me dire le nom correct d'utiliser pour accéder aux données du tableau à l'aide filter_input()

+0

btw je recherche comme fou sur google et n'a rien trouvé. –

+0

Êtes-vous sûr que la variable a une valeur avant d'être désinfectée? –

+0

@anthony oui il a une valeur, si je l'envoie par son nom c'est bien. juste pas sûr de la notation pour accéder à une clé de tableau en utilisant cette méthode de filtrage. –

Répondre

14

Je ne pense pas que vous pouvez accéder à la valeur unique (facilement, comme vous voulez) , cependant vous pouvez juste filtrer le tableau page et obtenir la valeur que vous voulez.

$page = filter_input(INPUT_POST, 'page', FILTER_SANITIZE_STRING, FILTER_REQUIRE_ARRAY); 
if (array_key_exists('name', $page)) { 
    $name = $page['name']; 
} 

Ou, si vous êtes OK de perdre la capacité de travailler avec l'entrée brute alors vous pouvez simplement utiliser:

if (isset($_POST['page']['name'])) { 
    $name = filter_var($_POST['page']['name'], FILTER_SANITIZE_STRING); 
} 

Les deux, cependant, sont assez laid.

+0

ouais, les deux sont super moche. Je pourrais aussi bien passer le formulaire à des noms var uniques, et éviter le problème. la honte qui n'est pas supportée. –

+0

Absolument. Les noms uniques sont beaucoup plus pratiques (pour l'extension de filtre) à travailler dans votre cas; malheureusement. – salathe

+0

Veuillez vérifier la réponse de @Fletcher Moore. Très élégant et efficace! – patrick

8

Que diriez-vous

$_POST['page'] = filter_var_array($_POST['page'], FILTER_SANITIZE_STRING); 
+0

Est-il bon de modifier la valeur comme ceci? –