2010-05-03 21 views
16

Ich benutze PHP-Filter, um grundlegende Bereinigung und Validierung von Formulardaten durchzuführen.PHP Filter, wie Eingabe Array zu filtern

Das Hauptproblem, das ich habe, besteht darin, dass ich mein Formular so aufweise, dass alle Daten in einem Array für den POST-Eingang sind. z.B. Formularfelder, Seite [name], Seite [Slug], Seite [Körper], Seite [Status] usw.

Unter Verwendung der folgenden:

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

Ich bin nicht in der Lage die Variable zuzugreifen. Kann jemand bitte den richtigen Namen sagen Sie mir verwenden Arraydaten für den Zugriff auf mit filter_input()

+0

BTW ich suche wie verrückt auf Google und nichts aufgedeckt. –

+0

Sind Sie sicher, dass die Variable vor der Bereinigung einen Wert hat? –

+0

@anthony ja es hat einen Wert, wenn ich es als Name durchschicke, ist es in Ordnung. einfach nicht sicher über die Notation, um mit dieser Filtermethode auf einen Array-Schlüssel zuzugreifen. –

Antwort

14

Ich glaube nicht, dass Sie die einzelnen Wert zugreifen können (leicht, wie Sie wollen) , aber Sie könnten nur das page Array filtern und den Wert erhalten, den Sie wollen.

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

Oder, wenn Sie mit dem Verlust der Fähigkeit, OK sind mit dem rohen Eingang zu arbeiten, dann können Sie nur verwenden:

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

Beide sind jedoch ziemlich hässlich.

+0

ja, beide sind super hässlich. Ich könnte das Formular auch auf einzelne Var-Namen umstellen und das Problem vermeiden. Schade, dass das nicht unterstützt wird. –

+0

Absolut. Einzelne Namen sind viel bequemer (für die Filtererweiterung), mit denen in Ihrem Fall gearbeitet wird; Unglücklicherweise. – salathe

+0

Bitte überprüfen Sie @Fletcher Moores Antwort. Sehr elegant und effektiv! – patrick

8

Wie wäre es

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

Ist es gut, den Wert so zu ändern? –