2014-12-12 15 views
5

Co to są niektóre standardy indistury sprawdzania, czy wszystkie wartości $ _POST są ustawione. Wiem, że możesz wykonać następujące czynności:Sprawdzanie, czy wszystkie zmienne POST są ustawione

if(isset($_POST['name']) && isset($_POST['username'])) 

Ale co się stanie, gdy przejdziesz do dużych formularzy? Czy po prostu powtarzaliby, dopóki wszystkie formularze nie zostały ustawione za pomocą ['key']?

+1

Można utworzyć funkcję lub pętlę. – Rizier123

+1

Dokładnie taki, jak twój przykład. – Madbreaks

+0

Nie jest to standard branżowy, ale użyłbym '$ _POST-> has (" name "," id "," user ") lub coś. Większość ram zapewnia środki do określania i sprawdzania wymaganych pól. – mario

Odpowiedz

0

Można również napisać:

<?php 
if (isset($_POST) && $_POST != NULL){ 

    foreach ($_POST as $key => $value) { 

     // perform validation of each item 
    } 
?> 

Oto bardziej szczegółowy przykład:

<?php 
if (isset($_POST) && $_POST != NULL) { 

$clean = array(); 

foreach ($_POST as $key => $value) { 
    switch($key) 
    { 
    case "a": 
     if (ctype_digit($value)){ 
     $clean[$key] = $value;  
     } break; 
    case "b": 
     if (ctype_alpha($value)){ 
     $clean[$key] = $value;  
     } break; 
    case "c": 
     if (ctype_alnum($value)){ 
     $clean[$key] = $value;  
     } break; 
    case "d": 
     if (ctype_punct($value)){ 
     $clean[$key] = $value;  
     } break; 
    default: echo $value, " is invalid data\n"; 
    } 
} 
var_dump($clean); 

} 

?> 

Więc jeśli miał formę z wejściem pola a, b, c, d, a ktoś sfałszowane listy formularz i dodane pole e, wówczas poprzedni kod nie zaakceptuje wartości z pola e.

0

można użyć tej funkcji:

if(!array_filter($_POST)) { 
    //echo somthing to user to fill the form 
} 

array_filter iteracje nad każdej wartości w tablicy przekazując je do funkcji wywołania zwrotnego. Jeśli funkcja zwrotna zwróci wartość true, bieżąca wartość z tablicy zostanie zwrócona do tablicy wyników. Klawisze tablicy są zachowane.

+0

To sprawdzi, czy była co najmniej jedna wartość postu bez wysłanej wartości falsey. Wierzę, że OP mówi więcej o walidacji, nie patrząc, czy $ _POST jest pusty. –

+0

@ JonathanKuhn nie mówi nic o walidacji! Mówi o sprawdzeniu, czy zmienne są ustawione czy nie –

+0

Ale w przykładowym kodzie, szuka konkretnych kluczy, aby upewnić się, że są ustawione. Inaczej, dlaczego nie użyliby po prostu 'if (! Empty ($ _ POST)) lub bardziej niezawodnego' if ($ _ SERVER ['REQUEST_METHOD'] == 'POST') 'A przez walidację zakładam, że jest bardziej prawdopodobnie dla wymaganych pól, upewniając się, że są ustawione, ponieważ szukają określonych pól. –

Powiązane problemy