encuentraperu.com
Dominios Gratis Perú
 

Manuales Gratis de PHP en Perú

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

Una función para resumir las tareas de declaración de las variables llegadas por POST en PHP, pero conservando la seguridad de no utilizar register_globals.

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 recibidos por parámetro. Para ello se utiliza la función explode(), que recibe un separador y un string y devuelve un array de strings, donde cada cadena es un substring del string recibido por parámetro, acotados por el separador indicado. La función explode se explica mejor con un ejemplo:

La función recibe dos parámetros: explode($separador, $cadena). Si la llamásemos así:

explode("|", "pepe|juan|luis")

Nos generaría un array donde el primer campo (índice 0) tendría el substring "pepe", el segundo campo sería "juan" y el tercero "luis".

Una vez disponemos del array con todos los nombres de los campos que se desean recibir, se hace un recorrido de ese array para obtener cada uno de sus valores y se declaran como variables los datos que contiene el formulario para cada uno de los campos a recibir.

Para ello, primero se crea un string con el código PHP necesario para declarar esa variable, utilizando el array $GLOBALS, para asegurarnos que la variable se crea global a la página en lugar de local a la función. Luego se utiliza eval() para ejecutar el código generado para declarar la variable.

Hay más explicaciones sobre este último paso en el artículo precedente: Bucle para recibir todas las variables por POST en PHP

Con esto hemos terminado este código, que se puede utilizar para recibir sin mucho esfuerzo formularios muy grandes. Lo malo es que si cambiamos o añadimos un campo en el formulario, también tenemos que cambiar el código de llamada a esta función, para que se entere bien sobre las variables que tiene que recibir. La parte buena, es que la función no afecta a la seguridad de nuestras aplicaciones, ya que somos nosotros quienes deciden qué variables se esperan del formulario.

Por CLIFTON CABELLO

Foro Sobre Php, Si te estas iniciando en el Lenguaje Php aqui puedes poner tus dudas

Foro Sobre Php, Si te estas iniciando en el Lenguaje Php aqui puedes poner tus dudas

Por CLIFTON CABELLO

   Manuales de PHP
 
   Manuales de Ayax
   Manuales de CSS

Contáctenos Ver PortalVer ForoConsulados PeruanosComunidades Peruanas La información mas Usada por Peruanos en el Exterior

Av. Petith Thouars 1251 Of. 302 Lima - Perú - Teléfonos: 2662540 / (062)510733 / 7959969
Celular
: (Movistar)96929470, (Movistar)(62)9928634 Perú
EMAIL: informes@encuentraperu.com   MSN: encuentraperu@hotmail.com


©1998-2009 ® ENCUENTRAPERU.COM Venta de Hosting, Dominio, Paginas Web Peru Diseño de Paginas Web Perú, Elaboracion de Paginas web Perú

Peruanos en el exterior, Peruanos en EE.UU, Peruanos en Argentina, Peruanos en colombia, Peruanos en Ecuador, Peruanos en Mexico, Peruanos en Venezuela, peruanos en España,Peruanos en Brazil, Peruanos en Bolivia, Peruans en Dinamarca, Peruanos en Dinamarca, Peruanos en Bulgaria, Peruanos en Bélgica, Peruanos en Chile, Peruanos en China, Peruanos en corea, Peruanos en Francia, Peruanos en Grecia, Peruanos en Holanda, Peruanos en Inglaterra, Peruanos en Japon, Peruanos en Inglaterra, Peruanos en Egipto, Peruanos en Camerun, Peruanos en Austria, Peruanos Millonarios, Chicas lindas del perú en el extranjero, Doctores del Peru en el Extranjero, Peruanos Deportistas en el Extrabjero, Fisicoculturistas Peruanos en el Extranjero, Musicos peruanos en el Extranjero, modelos Peruanos en el Exterior, Poetas Peruanos en el Exterior, Chefs peruanos en el Exterior, Como hacer un proyecto en el Exterior, Organizaciones peruanas en el Exterior, Ultimas noticias del Perú, Lo que suce den el Mundo y en el Perú, Quejas de peruanos en el Extranjero, Club de Peruanos en el Extranjero, Embajadas del Perú en el Exterior, Estas en el Exterior Reunate con mas peruanos, Peruanos por todo el Mundo, Manuales, Manuales Practicos, Videos de Peruanos, Fotos de Chicas, fotos de peruanos, Conosca a Gente del perú.