2010-07-06 8 views

Odpowiedz

58

coś takiego ($ || $ hasło logowania!):

// Required field names 
$required = array('login', 'password', 'confirm', 'name', 'phone', 'email'); 

// Loop over field names, make sure each one exists and is not empty 
$error = false; 
foreach($required as $field) { 
    if (empty($_POST[$field])) { 
    $error = true; 
    } 
} 

if ($error) { 
    echo "All fields are required."; 
} else { 
    echo "Proceed..."; 
} 
+3

Ponownie, polecam isSet ($ _ POST [$ field]). To dobre rozwiązanie. – Borealid

+0

Dzięki Harold, właśnie tego szukałem .. – FFish

+8

empty() sprawdza zarówno istnienie, jak i wartości innych niż false (null, false, 0, pusty ciąg znaków). –

1

empty i isset powinno wystarczyć.

if(!isset($_POST['submit'])) exit(); 

$vars = array('login', 'password','confirm', 'name', 'email', 'phone'); 
$verified = TRUE; 
foreach($vars as $v) { 
    if(!isset($_POST[$v]) || empty($_POST[$v])) { 
     $verified = FALSE; 
    } 
} 
if(!$verified) { 
    //error here... 
    exit(); 
} 
//process here... 
+0

Potrzebujesz również IsSet, myślę - w przeciwnym razie dostaniesz błąd, jeśli wartość w ogóle nie została wysłana. – Borealid

0

Osobiście wyodrębnić tablicy POST i wtedy, gdy echo następnie wypełnić formularz :)

+2

Awww, zawsze niebezpieczna praktyka, ponieważ możliwe jest przeszmuglowanie zmiennych globalnych do skryptu poprzez '$ _POST'. –

+0

Słyszałem już coś o tym wcześniej i prawdopodobnie nie jest to najlepsza droga, zwłaszcza jeśli jest coś ważnego –

3

Używam swojej własnej funkcji ...

public function areNull() { 
    if (func_num_args() == 0) return false; 
    $arguments = func_get_args(); 
    foreach ($arguments as $argument): 
     if (is_null($argument)) return true; 
    endforeach; 
    return false; 
} 
$var = areNull("username", "password", "etc"); 

Jestem pewna, że ​​można go z łatwością zmienić w twoim przypadku. Zasadniczo zwraca wartość true, jeśli którakolwiek z wartości ma wartość NULL, więc można ją zmienić na pustą lub inną.

1
if(isset($_POST['login']) && strlen($_POST['login'])) 
{ 
    // valid $_POST['login'] is set and its value is greater than zero 
} 
else 
{ 
    //error either $_POST['login'] is not set or $_POST['login'] is empty form field 
} 
+0

, jeśli masz przesłane puste pole, wtedy strlen() ocenia wartość 0, która jest fałszywa w PHP. –

0

zrobiłem to tak:

$missing = array(); 
foreach ($_POST as $key => $value) { if ($value == "") { array_push($missing, $key);}} 
if (count($missing) > 0) { 
    echo "Required fields found empty: "; 
    foreach ($missing as $k => $v) { echo $v." ";} 
    } else { 
    unset($missing); 
    // do your stuff here with the $_POST 
    } 
0

Właśnie napisałem funkcję szybkiego, aby to zrobić. Potrzebowałem go do obsługi wielu formularzy, więc zrobiłem to, aby zaakceptować łańcuch oddzielony przez ",".

//function to make sure that all of the required fields of a post are sent. Returns True for error and False for NO error 
//accepts a string that is then parsed by "," into an array. The array is then checked for empty values. 
function errorPOSTEmpty($stringOfFields) { 
     $error = false; 
      if(!empty($stringOfFields)) { 
       // Required field names 
       $required = explode(',',$stringOfFields); 
       // Loop over field names 
       foreach($required as $field) { 
        // Make sure each one exists and is not empty 
        if (empty($_POST[$field])) { 
        $error = true; 
        // No need to continue loop if 1 is found. 
        break; 
        } 
       } 
      } 
    return $error; 
} 

Więc można wprowadzić tę funkcję w kodzie i obsługi błędów w przeliczeniu na stronę podstawie.

$postError = errorPOSTEmpty('login,password,confirm,name,phone,email'); 

if ($postError === true) { 
    ...error code... 
} else { 
    ...vars set goto POSTing code... 
} 
0

Uwaga: Należy zachować ostrożność, jeśli 0 jest dopuszczalną wartością dla wymaganego pola. Jak wspomniano w @ Harold1983, są one traktowane jako puste w PHP. Dla tego rodzaju rzeczy powinniśmy użyć isset zamiast pustego.

$requestArr = $_POST['data']// Requested data 
$requiredFields = ['emailType', 'emailSubtype']; 
$missigFields = $this->checkRequiredFields($requiredFields, $requestArr); 

if ($missigFields) { 
    $errorMsg = 'Following parmeters are mandatory: ' . $missigFields; 
    return $errorMsg; 
} 

// Function to check whether the required params is exists in the array or not. 
private function checkRequiredFields($requiredFields, $requestArr) { 
    $missigFields = []; 
    // Loop over the required fields and check whether the value is exist or not in the request params. 
    foreach ($requiredFields as $field) {`enter code here` 
     if (empty($requestArr[$field])) { 
      array_push($missigFields, $field); 
     } 
    } 
    $missigFields = implode(', ', $missigFields); 
    return $missigFields; 
}