PDF de programación - Pasar las variables SESSION, POST Y GET a variables normales en PHP

Imágen de pdf Pasar las variables SESSION, POST Y GET a variables normales en PHP

Pasar las variables SESSION, POST Y GET a variables normales en PHPgráfica de visualizaciones

Publicado el 22 de Abril del 2018
861 visualizaciones desde el 22 de Abril del 2018
721,3 KB
110 paginas
Creado hace 15a (04/12/2008)
Tu mejor ayuda para aprender a hacer webs
www.desarrolloweb.com

Pasar las variables SESSION, POST Y GET a variables
normales en PHP

Hace un par de semanas se me encomendó migrar un sitio (desarrollado en php) de servidor,
el tema iba relativamente en paz hasta que di cuenta de un problema recurrente en este tipo
de situaciones, el servidor antiguo tenia las variables globales en On y el nuevo las tenia en Off
... recurrente no ?

La verdad es que no quise complicarme la vida como otras veces, y me di cuenta de algo que
me podría ahorrar un par de horas de trabajo, todos los php hacían un include a un archivo
php, recurrente también no?
Asi es que me puse a pensar en un pedazo de código que me permitiera tomar estos 3 tipos de
variables (SESSION, POST Y GET) y me las dejara como variables normales, si no lo tienen
claro el ejercicio es mas o menos el siguiente :

Supongamos que la variable viene desde un formulario via POST, el código decía algo asi ...

<?

if ($variable == "algo")
{
echo "esta variable hace alguna cosa";
}

?>

Es decir, le faltaba esta instrucción antes del if

<?php

$variable = $_POST["variable"]; // le faltaba esta instrucción antes del if

if ($variable == "algo")
{
echo "esta variable hace alguna cosa";
}

?>

Tenia 2 opciones, o me ponía a buscar TODAS estas situaciones y las arreglaba una a una, o
colocaba un pedazo de código en archivo al que todos los demás le hacían un include que me
corrigiera este "error" propio de aquellos que estamos a trabajar con los "servidores en
producción", o sea, con las variables globales en On.

Bueno, después de muchos cabecearme encontré la solución, y aquí la muestro a todos uds.

<?

if($_POST)
{
$keys_post = array_keys($_POST);
foreach ($keys_post as $key_post)
{
$$key_post = $_POST[$key_post];
error_log("variable $key_post viene desde $ _POST");
}

Taller de PHP: http://www.desarrolloweb.com/manuales/6/
© Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorización.

1

Tu mejor ayuda para aprender a hacer webs
www.desarrolloweb.com

}

if($_GET)
{
$keys_get = array_keys($_GET);
foreach ($keys_get as $key_get)
{
$$key_get = $_GET[$key_get];
error_log("variable $key_get viene desde $ _GET");
}
}

if($_SESSION)
{
$keys_sesion = array_keys($_SESSION);
foreach ($keys_sesion as $key_sesion)
{
$$key_sesion = $_SESSION[$key_sesion];
error_log("variable $key_sesion viene desde $ _SESSION");
}
}

?>

Son básicamente 3 if que hacen lo mismo, toman las claves del arreglo en cuestión (SESSION ,
POST o GET) y generan una "variable variable", creo que hay un articulo en desarrolloweb que
habla de este tema, y esto hace toda la magia, el error_log fue una implementación para ver
que variables se iban ocupando (si no tienes acceso al servidor puedes sacarlo sin problemas).

Para alguien que guste de las funciones puede también guardarlo como función y llamarla
cuando lo necesite. O también iterar el proceso con las 3 variables en cuestión para no tener
que hacer 3 if, o pasarle cualquier arreglo para que haga el mismo proceso ... en fin, la idea
esta, solo espero haber contribuido en algo al ahorro de tiempo de alguno de ustedes.

Juan Edgardo Jorquera Uribe



Artículo por

Bucle para recibir todos los datos de una fila de un
recordset con PHP

Vamos a realizar una función para recibir todos los datos de una fila de un recordset (conjunto
de registros extraídos de una base de datos, Mysql en el caso de este artículo) y declararlos
como variables globales a la página. Se trata de una función que realiza un recorrido genérico
a todos los datos de cualquier fila y cualquier recordset y va generando las variables globales
para trabajar con esos datos.
Las variables globales tendrían como nombre el mismo del campo (que es el mismo nombre
que la columna de la tabla asociada a ese dato) y como valor, el dato que guarda esa fila en la
columna determinada.

Nota: Este artículo es similar a otro en el que se realiza un recorrido genérico a las variables recibidas por
POST. Las explicaciones de ese artículo pueden venir bien para comprender mejor este.

Para una tabla como esta:

id_clie

nombre

telefono_

Taller de PHP: http://www.desarrolloweb.com/manuales/6/
© Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorización.

2

Tu mejor ayuda para aprender a hacer webs
www.desarrolloweb.com

nte

_cliente

cliente

1

2

3

Pepe

Juan

María

90 000
00 00

99 888
88 88

999 99
99 99

Si la función recibiera una fila cualquiera, se generarían variables con nombres id_cliente,
nombre_cliente y telefono_cliente y sus valores serían los de esa fila en concreto. Para la fila
1, se generarían las variables:
id_cliente=1
nombre_cliente="Pepe"
telefono_cliente="90 000 00 00"
El recorrido será genérico, por lo que servirá para cualquier tabla, con cualquier número y
nombre de las columnas. Las variables generadas serán siempre las columnas que existan, con
los valores de la fila que se haya recibido por parámetro.
Esta función es muy útil para recibir los datos de una fila y meterlos en variables globales,
para luego operar con ellos. Como el recorrido es genérico, da igual el número, nombre y tipo
de los campos que se van a meter en las variables.
function recibe_fila($fila){
foreach($fila as $nombre_campo => $valor){
if (gettype($nombre_campo)!="integer"){
$asignacion = "\$GLOBALS[\"" . $nombre_campo . "\"]='" . $valor . "';";
eval($asignacion);
//echo $asignacion . "<br>";
}
}
}
Un ejemplo de uso de esta función
Veamos cómo utilizar esta función para recibir los datos de una fila. Se supone que antes de
ejecutar estas líneas se debe haber abierto una conexión con la base de datos. También se
supone que después de ejecutar este código, se debería cerrar esa conexión con la base de
datos.
$ssql="select * from cliente where id_cliente=2";
$rs=mysql_query($ssql);
$fila=mysql_fetch_array($rs);
recibe_fila($fila);
Después de estas líneas, se habrán creado las variables globales con los datos de la fila
extraída de la tabla cliente, una variable para cada una de las columnas de la fila.

Miguel Angel Alvarez



Artículo por

Taller de PHP: http://www.desarrolloweb.com/manuales/6/
© Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorización.

3

Tu mejor ayuda para aprender a hacer webs
www.desarrolloweb.com

Función PHP segura para recibir los datos de un formulario

La idea de este artículo es realizar una función que nos simplifique la tarea de recibir en
variables los datos que nos llegan desde un formulario por el método POST, pero asegurando
nuestra aplicación, para no declarar como variable aquello que no estamos esperando.

Ya hicimos una primera aproximación a este objetivo en el artículo Bucle para recibir todas las
variables por POST en PHP. Aunque la solución propuesta en dicho artículo no era del todo
adecuada, por hacer más vulnerable nuestro script, ya que rebaja la seguridad de nuestro
código como si utilizásemos register_globals = on.

Nota:Podemos saber qué es esto de register_globals y por qué afecta a la seguridad de nuestras
aplicaciones PHP en la FAQ: register_globals y seguridad en PHP

El ejemplo que estamos tratando sólo recibe las variables por POST que nosotros esperamos
recibir y no todas las variables que el formulario pueda contener, lo que realmente mejora la
seguridad. Para ello, la función recibe_post() va a recibir un parámetro con los nombres de las
variables que debe declarar con los datos del formulario. Como nosotros decidimos qué
variables se reciben, ya no corremos el riesgo que un usuario malicioso envíe otros campos por
el formulario que luego se conviertan en variables en nuestro sistema.

Veamos el código de esta función:

function recibe_post($datos_recibir=""){
if ($datos_recibir==""){
foreach($_POST as $nombre_campo => $valor){
$asignacion = "\$GLOBALS[\"" . $nombre_campo . "\"]='" . $valor . "';";
eval($asignacion);
}
}else{
//es que recibo por parámetro la lista de campos que deseo recibir
$campos = explode(",", $datos_recibir);
foreach($campos as $nombre_campo){
$asignacion = "\$GLOBALS[\"" . $nombre_campo . "\"]=\$_POST[\"" . $nombre_campo . "\"];";
eval($asignacion);
}
}
}

Esta función recibe una variable llamada $datos_recibir, que contiene los datos que se desean
recibir. Ese dato es opcional, ya que si no recibe nada, se entiende que $datos_recibir vale "".

Lo primero que se hace es evaluar si $datos_recibir es un string vacío. Si es así, es que no se
ha indicado qué es lo que se quiere recibir. Entonces, se recibe por formulario todo lo que
haya. (Nótese que si no enviamos nada en ese parámetro se estarán recibiendo todos los
datos que haya en el formulario y nuestra aplicación verá mermada la seguridad).

Ahora bien, si se recibe algo en $datos_recibir, es que sabemos qué datos se desean declarar
como variables. En ese caso, estaremos recibiendo un string con todos los nombres de los
campos del formuario que deseamos recibir, separados por comas. Imaginemos que tenemos
un formulario con dos campos, uno llamado "nombre_usuario" y otro "edad_usuario".
Entonces, a esta función tenemos que pasarle esos dos nombres de campos separados por
comas "nombre_usuario,edad_usuario".

Para realizar las tareas de declaración de las variables, se crea un array con todos los campos

Taller de PHP: http://www.desarrolloweb.com/manuales/6/
© Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorización.

4

Tu mejor ayuda para aprender a hacer webs
www.desarrolloweb.com

rec
  • Links de descarga
http://lwp-l.com/pdf10579

Comentarios de: Pasar las variables SESSION, POST Y GET a variables normales en PHP (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad