Foros del Web » Programando para Internet » PHP »

Problema eval("return $algo");

Estas en el tema de Problema eval("return $algo"); en el foro de PHP en Foros del Web. Estoy haciendo un script y en un momento dado necesito que o bien haga un Código PHP: echo  "Header('Location $redir')" ;  o bien un Código PHP: ...
  #1 (permalink)  
Antiguo 26/07/2004, 13:49
Avatar de xavivars  
Fecha de Ingreso: enero-2002
Ubicación: Benissa - la Marina Alta
Mensajes: 212
Antigüedad: 15 años, 11 meses
Puntos: 1
Pregunta Problema eval("return $algo");

Estoy haciendo un script y en un momento dado necesito que o bien haga un
Código PHP:
echo "Header('Location $redir')"
o bien un
Código PHP:
return 
segun un parametro que recibe la funcion.

Para ello, hago esto
Código PHP:
    if($redirect)
    {
        
$url explode("?",$_SERVER['HTTP_REFERER']);
        
$redir=$url[0];
        
$retorn="Header('Location: $redir');";
    }
    else
        
$retorn='return 0;'
El problema viene que despues hago un eval($retorn) y no siempre funciona:
  • Si $retorn vale el Header, todo correcto
  • Si $retorn vale el return 0, no hace caso y no hace el return. Esto provoca que continue ejecutandose la funcion y produzca un resultado erroneo.

Alguien me puede ayudar?
  #2 (permalink)  
Antiguo 26/07/2004, 14:12
Avatar de xavivars  
Fecha de Ingreso: enero-2002
Ubicación: Benissa - la Marina Alta
Mensajes: 212
Antigüedad: 15 años, 11 meses
Puntos: 1
He encontrado una solucion temporal, que consiste en hacer
Código PHP:
return eval($retorn); 
Esto se debe a que si la cadena de texto que se le pasa a eval contiene un return, eval termina su ejecucion, pero no así el script donde se encuentra.

En mi caso funciona, ya que las opciones de valor de retorn son o bien un return o bien un Header('Location: ...'), por lo que siempre quiero que termine la ejecucion del script y no hay problema en poner return antes de eval, pero si quisiera en algun caso que eval() no terminara la ejecución del script no sabria como hacerlo...
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 05:37.