- Racó tècnic - http://www.racotecnic.com -

Obtener datos POST de manera rápida y sencilla con PHP

Haciendo un poco de orden por el ordenador he encontrado una función que hice para el último trabajo en el que estuve. Me dedicaba sobre todo a crear aplicaciones de entrada de datos mediante PHP, así que me pasaba el día recuperando información POST.

Harto de pasarme el día haciendo esto:

$variable = array($_POST['var1'],$_POST['var2'],$_POST['var3'],$_POST['varN']);

…decidí hacer una función que me hiciera la tarea un poco más sencilla; aquí está:

function fillPost($keys,$exclude = null)
{
	$array = array();
	// Fem un bucle amb tota la informació post
	foreach ($_POST as $key=>$val){
		// Si la variable keys és un array
		if (is_array($keys)){
			// I la clau actual és dins de l'array, llavors afegim la clau i el valor en el nou array
			if (in_array($key, $keys)) $array[$key] = $val;
		// Si no és array i el seu contingut és exactament ALL
		}elseif($keys==="ALL"){
			// Si l'exclude és especificat
			if (isset($exclude)){
				// És un array
				if(is_array($exclude)){
					// I la clau actual NO hi és en l'array, llavors afegim la clau i el valor en el nou array
					if (!in_array($key,$exclude)) $array[$key] = $val;
				// Sinó és un array
				}else{
					if ($key!=$exclude) $array[$key] = $val;
				}
			// Si no especifiquem l'exclude afegim tots els valors
			}else{
				$array[$key] = $val;
			}
		// Si no és cap de les anteriors (únicament especifiquem una clau) la retornem amb el seu valor
		}else return $_POST[$keys];
	}
	return $array;
}

¿Qué hace?

Recupera toda la información POST y la vuelca en un array según las claves que le hayamos especificado. Este array generado es un array asociativo con las mismas claves que las recibidas vía POST.

Podemos recuperar las claves deseadas (pasándolas en un array) o bien podemos recuperarlas todas (indicando “ALL”).

También funciona a la inversa, es decir… si le pasámos como parámetro $keys = “ALL” y como segundo parámetro ($exclude) un array con nombres de variables POST guardará en el array todas las claves POST excepto las que hayamos indicado como segundo parámetro.

¿Cómo funciona?

array fillPost ( array/string $keys [, array/string $exclude ] )

keys
Una cadena de texto o un array de cadenas de texto indicando las claves que deseamos. Si utilizamos “ALL” recuperamos toda la información.

exclude
Una cadena de texto o un array de cadenas de texto indicando las claves que NO deseamos incluir (útil utilizando “ALL” como parámetro keys.

Variables que retorna
Un array asociativo.

Comentarios del código (traducidos)

Ejemplos

Recuperando algunas claves $_POST:

$datos = array('nombre','password','email');
$post = fillPost($datos);
print_r($post);

Salida aproximada:

Array
(
    ['nombre'] => "Valor de la variable $_POST['nombre']"
    ['password'] => "Valor de la variable $_POST['password']"
    ['email'] => "Valor de la variable $_POST['email']"
)

Recuperando todas las claves $_POST menos algunas:

$excluir = array('nombre','password','email');
$post = fillPost("ALL",$excluir);
print_r($post);

Salida aproximada:

Array
(
    ['avatar'] => "Valor de la variable $_POST['avatar']"
    ['fecha_nacimiento'] => "Valor de la variable $_POST['fecha_nacimiento']"
    ['cualquierVariablePostQueNoEstéEnExclude'] => ....
)

Todavía se podría mejorar un poco añadiendo un tercer parámetro por referencia (por si nos interesa modificar la tabla por refencia) y probablemente alguna cosilla más, pero eso ya os lo dejo a vuestro gusto :)