PHP: comprueba si alguno de los vars publicados está vacío – formulario: todos los campos son obligatorios

¿Hay una función más simple para algo como esto?

if (isset($_POST['Submit'])) { if ($_POST['login'] == "" || $_POST['password'] == "" || $_POST['confirm'] == "" || $_POST['name'] == "" || $_POST['phone'] == "" || $_POST['email'] == "") { echo "error: all fields are required"; } else { echo "proceed..."; } } 

Algo como esto:

 // 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..."; } 

Yo uso mi propia función personalizada …

 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"); 

Estoy seguro de que se puede cambiar fácilmente para su caso. Básicamente, devuelve verdadero si alguno de los valores es NULO, por lo que podría cambiarlo a vacío o lo que sea.

empty y isset debería hacerlo.

 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... 
 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 } 

Personalmente, extraigo la matriz POST y luego tengo if (! $ Login ||! $ Password) y luego echo complete el formulario 🙂

Lo hice así:

 $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 } 

Acabo de escribir una función rápida para hacer esto. Lo necesitaba para manejar muchos formularios, así que lo hice para que acepte una cadena separada por ‘,’.

 //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; } 

De modo que puede ingresar esta función en su código y manejar errores en cada página.

 $postError = errorPOSTEmpty('login,password,confirm,name,phone,email'); if ($postError === true) { ...error code... } else { ...vars set goto POSTing code... } 

Nota: Solo tenga cuidado si 0 es un valor aceptable para un campo requerido. Como @ Harold1983- mencionado, estos se tratan como vacíos en PHP. Para este tipo de cosas, deberíamos usar isset en lugar de empty .

 $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; }