Ver Mensaje Individual
  #40 (permalink)  
Antiguo 19/04/2011, 17:39
Avatar de abimaelrc
abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: Meter funciones PHP en EVAL

En primer lugar ya estás escapando, ¿por que volver a escapar? Lo pregunto sin que me des una contestación es solo una pregunta para que analizes. Si vuelves a escapar, lo que estarías haciendo es colocando una back-slash a los back-slash (\\). Error, porque no me fije que estabas declarando en otro lado. Lo que sucede con tu código es más bien que no está escapando nada porque ya la primera variable no muestra los backslash. En tu ejemplo quedaría así
Código PHP:
Ver original
  1. $salida = "$foo = 'bar'; echo $foo;";
Esto provoca este error
Cita:

Notice: Undefined variable: foo in C:\xampp\htdocs\b.php(3) : eval()'d code on line 1

Notice: Undefined variable: foo in C:\xampp\htdocs\b.php(3) : eval()'d code on line 1
= 'bar'; echo ;
Al parecer no tienes declarado ver todos los errores debes modificarlo para que puedas ver todo lo que haces mal, lee este tema http://www.forosdelweb.com/f18/aport...rrores-735515/

Para resolver se puede hacer de varias formas

1.
Código PHP:
Ver original
  1. <?php
  2. $variable = "\\\$foo = 'bar'; echo \\\$foo;";
  3. eval('$salida = "' . $variable . '";');
  4. echo $salida;

2.
Código PHP:
Ver original
  1. <?php
  2. $variable = "\$foo = 'bar'; echo \$foo;";
  3. eval('$salida = "' . str_replace('$', '\$', $variable) . '";');
  4. echo $salida;

La razón porque ocurre lo que te está pasando es que el primer escape es para la primera variable. Entonces cuando la mencionas por segunda vez lo que estás colocando es algo como
Cita:
eval('$salida = "' . $foo = 'bar'; echo $foo; . '";');
Porque la primera variable ya no contiene los back-slash, ya que su función era para la primera solamente.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos