Foros del Web » Programando para Internet » PHP »

Funciones: Cambio de $_POST a variable no superglobal

Estas en el tema de Funciones: Cambio de $_POST a variable no superglobal en el foro de PHP en Foros del Web. Hola a todos. Tengo este código ya hecho... Código PHP: foreach( $_POST  as  $campo  =>  $valor ){     $asign  =  "\$"  .  $campo  .  "='"  ...
  #1 (permalink)  
Antiguo 05/12/2006, 18:01
Avatar de david_M_G  
Fecha de Ingreso: febrero-2005
Mensajes: 938
Antigüedad: 19 años, 2 meses
Puntos: 20
Funciones: Cambio de $_POST a variable no superglobal

Hola a todos.

Tengo este código ya hecho...

Código PHP:
foreach($_POST as $campo => $valor){
   
$asign "\$" $campo "='" $valor "';";
   eval(
$asign);
    } 
Cuya tarea es pasar de las superglobales $_POST a las variables estándar. Es decir, una forma automatizada de hacer:

Código PHP:
$variable $_POST["variable"];
$variable2 $_POST["variable2"];
$otra_cosa $_POST["otra_cosa"];
... 
Todo esto funciona de maravilla. El caso es que me gustaría tenerlo en una función, por comodidad.

Código PHP:
function pasarvariables() {

foreach(
$_POST as $campo => $valor){
   
$asign "\$" $campo "='" $valor "';";
   eval(
$asign);
    }



Me gustaría que con añadir al código:
Código PHP:
pasarvariables(); 
Ya me hiciese todo el proceso. El caso es que no lo hace... ¿Cómo puedo conseguir el $asign que he creado a través de esta función? ¿O qué otra cosa debo hacer para usarlo en forma de función?

Gracias
  #2 (permalink)  
Antiguo 05/12/2006, 18:40
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
El problema es que la variable creada dentro de la función, es local a la misma.
Normalmente, bastaría con agregar

global $nombrevariable;

dentro de la función, pero en este caso no sirve (ya que no sabés de antemano qué variables vas a crear)

Sugiero meter el código en un archivo e incluirlo (con include o require).

Y una cosa más: no es necesario usar eval, podés hacer lo mismo con este foreach:
Código PHP:
foreach($_POST as $campo => $valor){
   $
$campo  $valor;
    } 

Saludos.
  #3 (permalink)  
Antiguo 05/12/2006, 18:44
Avatar de david_M_G  
Fecha de Ingreso: febrero-2005
Mensajes: 938
Antigüedad: 19 años, 2 meses
Puntos: 20
Gracias por tu respuesta, alvlin. Ya había probado con las globales y con return y doy fé de que no funciona.

Veo que finalmente tendrá que ser vía include(). Gracias de nuevo
  #4 (permalink)  
Antiguo 05/12/2006, 19:04
 
Fecha de Ingreso: julio-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.304
Antigüedad: 18 años, 9 meses
Puntos: 6
Hola david:

Utilizar eval() con datos sin validar(como pueden ser los qu evienen por $_GET o $_POST) es peligroso. Quiza te sirva mirar un poquito esta entrada, sobre todo sus comentarios:

http://www.buayacorp.com/archivos/xss-o-sql-injection/


Tambien podrias usar extract(), pero igual que en lo de mas arriba, no lo veo jeje. Bueno ya veras, suerte.


Saludos.
__________________
Federico.

Mi página: www.jourmoly.com.ar

Última edición por Fridureiks; 05/12/2006 a las 21:14
  #5 (permalink)  
Antiguo 06/12/2006, 08:03
Avatar de david_M_G  
Fecha de Ingreso: febrero-2005
Mensajes: 938
Antigüedad: 19 años, 2 meses
Puntos: 20
Re: Funciones: Cambio de $_POST a variable no superglobal

Hola Fridureiks. Ya conocía, o suponía, el riesgo de eval(). El código que he utilizado es el mismo, o muy parecido, al que sale ahí en el mismo link que me has dado.

Por eso he tenido en cuenta la solución que alvlin me ha dejado

Código PHP:
   $$campo  $valor
Saludos y gracias
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:23.