Inici > Programació, Web > Obtener datos POST de manera rápida y sencilla con PHP

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

divendres, 8 de maig de 2009 Imprimir

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)
  • Generamos un bucle con toda la información POST
    • Si la variable $keys es un array…
      • Y la clave actual se encuentra dentro del array, entondes añadimos la clave y el valor al nuevo array
    • Si no es un array y su contenido es exactamente “ALL”…
      • Si se especifica la variable exclude…
        • Y ésta es un array…
          • Si la clave actual NO está en el array de eclusiones, la añadimos al nuevo array
        • Si no es un array…
          • Si la clave actual NO es la de la variable $exclude, se añade al nuevo array
      • Si no se especifica la variable $exlude…
        • Se añaden todos los campos al nuevo array
    • Si no es ninguna de las anteriores (es decir, si sólo hemos indicado una clave) se devuelve dicha clave.

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 :)

Categories: Programació, Web Etiquetes:, ,
  1. Miguel Angel
    dimarts, 7 de gener de 2014 a les 20:39 | #1

    Gracias amigo por compartir tu conocimiento realmente me sirvio mucho en mi proyecto.

Comentaris tancats.