2010-05-03 11 views
16

Sto utilizzando il filtro PHP per eseguire la sanitizzazione di base e la convalida dei dati del modulo.Filtro PHP, come filtrare l'array di input

Il problema principale che sto avendo è che contrassegno il mio modulo in modo che tutti i dati siano in un array per l'input POST. per esempio. i campi del modulo, pagina [nome], pagina [slug], pagina [corpo], pagina [Stato], ecc

utilizzando i seguenti:

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

non sono in grado di accedere alla variabile. Qualcuno può dirmi il nome corretto da utilizzare per accedere ai dati dell'array utilizzando filter_input()

+0

btw ho cercato come un matto su google e non ha trovato nulla. –

+0

Sei sicuro che la variabile abbia un valore prima di disinfettare? –

+0

@anthony si ha un valore, se lo mando come nome va bene. non sono sicuro della notazione per accedere a una chiave di array usando questo metodo di filtro. –

risposta

14

Non credo che si può accedere al valore singolo (facilmente, come volete) , tuttavia, è possibile filtrare semplicemente l'array page e ottenere il valore desiderato.

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

Oppure, se siete OK con la perdita della capacità di lavorare con l'ingresso grezzo allora si potrebbe utilizzare:

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

Entrambi, però, sono piuttosto brutto.

+0

sì, entrambi sono molto brutti. potrei anche cambiare il modulo in nomi di var singoli ed evitare il problema. peccato che non sia supportato. –

+0

Assolutamente. I nomi singoli sono molto più convenienti (per l'estensione del filtro) con cui lavorare nel tuo caso; purtroppo. – salathe

+0

Si prega di controllare la risposta di @Fletcher Moore. Molto elegante ed efficace! – patrick

8

Come su

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

È buono modificare un valore come questo? –

Problemi correlati