Cuando estamos haciendo un proyecto muy grande y necesitamos capturar varios elementos GET, POST y SESSION, se nos vuelve complicado hacer un ISSET a cada uno, asignarlos a una variable o inicializarlos. Es por ello que muestro una clase que hice para poder capturar todos estos elementos y generar sus respectivas variables, con posibilidad de hacer debug.

archivo: getVars.php
<?php
/**
 *
 * @author Horacio Romero Mendez (angelos)
 * @License  Copyleft 2011
 * @since         Apr 4, 2011 3:36:21 PM
 * @Internal GNU/Linux Arch 2010.05 Notebook
 *
 */
 
class getVars {
    private static $arreglo = array();
     
    public static function getAll($debug=false){
         self::getGET($debug);
         self::getSESSION($debug);
         self::getPOST($debug);
         
         return (self::$arreglo);
     }
     
     public static function getGET($debug=false){
         foreach($_GET as $campo => $texto){
            self::$arreglo["tmp_$campo"] = $texto;
         
            if ($debug) echo "\$tmp_".$campo."='".$texto."';";
         }
     
        return (self::$arreglo);
     }
    
     public static function getSESSION($debug=false){
         @session_start(); 
         
         foreach($_SESSION as $campo => $texto){
             self::$arreglo["tmp_$campo"] = $texto;
             if ($debug) echo "\$tmp_".$campo."='".$texto."';";
         }
         
         return (self::$arreglo);
     }
    
     public static function getPOST($debug=false){
         foreach($_POST as $campo => $texto){
             self::$arreglo["tmp_$campo"] = $texto;
             if ($debug) echo "\$tmp_".$campo."='".$texto."';";
         }
         
         return (self::$arreglo);
     }
     
}
?>
Su modo de uso es el siguiente:
Supongamos que tenemos un archivo donde recibe variables de un formulario.
<?PHP
//INCLUIMOS LA CLASE
include_once(“getVars.php”);  

//PARA ATRAPAR POST
extract(getVars::getPOST(), EXTR_OVERWRITE);

//PARA ATRAPAR GET
extract(getVars::getGET(), EXTR_OVERWRITE);

//PARA ATRAPAR SESSION
extract(getVars::getSESSION(), EXTR_OVERWRITE);

//PARA ATRAPAR TODOS
extract(getVars::getAll(), EXTR_OVERWRITE);

//SI QUEREMOS MOSTRAR LAS VARIABLES QUE CACHAMOS, AGREGAMOS UN true
extract(getVars::getPOST(true), EXTR_OVERWRITE);
?>
Con lo anterior dependiendo de cual coloquemos en nuestro código, atrapará todos sus elementos y generará una variable anteponiéndole la palabra tmp_, para que no interfiera con las variables de nuestro código.
Por ejemplo si tuviésemos el siguiente formulario
<input type="text" name="usuario"/>
Al atraparlo, nos generaría una variable llamada “$tmp_usuario”, la cual contendrá el valor que el usuario haya colocado.
Si le pasamos el parámetro true al debug (está en negritas mas arriba) aparte de atrapar todas las variables nos mostrara en pantalla las mismas. Ejemplo:
[POST]
usuario=admin
En resumen, con ésta clase nos permite atrapar todos los elementos de un formulario, y recuperar todos los elementos de nuestra sesiones, además podemos agregarle código para sanitizar las variables.
Consejo: Si vas a atrapar variables POST y GET en un mismo archivo. primero atrapa GET y luego POST, ya que si se llegase a enviar el mismo parámetro GET que en POST y GET se recupera después, sobreescribiría a POST incurriendo en una inyección.
Categorías: PHPProgramación

angelinux

Desarrollador de páginas web desde el año 2000 y con experiencia en programación de sistemas para empresas desde el 2008; cofundador de CONSoluciones; autor del blog de software libre “Angelinux-slack”; docente en maestría en UPAV y fundador de la distribución Linux Falco que está en desarrollo para la Universidad Veracruzana. Además, ponente, organizador de congreso, laborista social, impartidor de cursos de programación y servidores Linux, webmaster, y ex invitado en programa de televisión.

1 Comentario

Formularios en PHP – Angelinux · 25 noviembre, 2016 a las 17:56

[…] Obtener post, get y session facilmente en PHP […]

Deja un comentario

Marcador de posición del avatar

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *