2010-05-03 18 views
16

Używam filtru PHP do perfomicznej podstawowej dezynfekcji i sprawdzania danych formularzy.Filtr PHP, jak filtrować tablicę wejściową

Głównym problemem jest to, że zaznaczam mój formularz tak, że wszystkie dane są w jednej tablicy dla wejścia POST. na przykład pola formularza, strona [nazwa], strona [ślimak], strona [ciała], strona [status] itd

użyciu następujących:

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

nie jestem w stanie uzyskać dostęp do zmiennej. Czy ktoś mógłby mi powiedzieć poprawnej nazwy użyć, aby uzyskać dostęp do danych za pomocą tablicy filter_input()

+0

Przy okazji szukam jak szalony w google i nic nie znalazłem. –

+0

Czy jesteś pewien, że zmienna ma wartość przed odkażaniem? –

+0

@anthony tak, ma wartość, jeśli wyślę ją jako nazwę, jest w porządku. nie jestem pewien notacji dostępu do klucza tablicy przy użyciu tej metody filtrowania. –

Odpowiedz

14

I nie sądzę, że można uzyskać dostęp do pojedynczej wartości (łatwo, jak chcesz) , jednak możesz po prostu przefiltrować tablicę page i uzyskać żądaną wartość.

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

Lub, jeśli jesteś OK z utratą zdolności do pracy z wejściem surowego następnie można po prostu użyć:

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

Oba jednak są dość brzydkie.

+0

tak, oba są super brzydkie. Mogę równie dobrze zamienić formularz na nazwy pojedynczych var i uniknąć problemu. wstyd, który nie jest obsługiwany. –

+0

Absolutnie. Pojedyncze nazwy są znacznie wygodniejsze (w przypadku rozszerzenia filtru) do pracy w twoim przypadku; Niestety. – salathe

+0

Proszę sprawdzić odpowiedź @Fletchera Moore'a. Bardzo elegancki i skuteczny! – patrick

8

Jak o

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

Czy warto modyfikować wartość w ten sposób? –

Powiązane problemy