Foros del Web » Programando para Internet » PHP »

Capturar resultado de eval() y almacenar en string

Estas en el tema de Capturar resultado de eval() y almacenar en string en el foro de PHP en Foros del Web. Hola! Comentare mi problema a continuación con un ejemplo... pues así creo que será mas fácil: Tengo una tabla "Noticias" en la base de datos. ...
  #1 (permalink)  
Antiguo 05/05/2014, 03:57
Avatar de fbedia  
Fecha de Ingreso: julio-2010
Mensajes: 159
Antigüedad: 14 años, 5 meses
Puntos: 8
Capturar resultado de eval() y almacenar en string

Hola!
Comentare mi problema a continuación con un ejemplo... pues así creo que será mas fácil:

Tengo una tabla "Noticias" en la base de datos. Dentro de esta hay una columna llamada "Titulo", la cual puede contener código PHP, que posteriormente me encargo de pintar.

Por ejemplo, un titulo (tal cual esta en la BD) podría ser:
Cita:
?> Bienvenido a nuestra web <?php echo $host_name; ?>
Posteriormente lo pinto en PHP de la siguiente forma:
Código PHP:
Ver original
  1. echo eval($row['titulo']);

Hasta aquí todo correcto.

Lo que quiero hacer ahora, es almacenar en un string el titulo.
Uso urls amigables, y tal cual lo tengo ahora la url me queda asi:
Cita:
http://www.miweb.com/?>_Bienvenido_a_nuestra_web_<?php..
y quisiera algo asi:
He mirado en la docu de PHP http://www.php.net/manual/es/function.eval.php y si se fijan hay una parte donde dice lo siguiente:
Sugerencia:
Como con todo lo que genera un resultado directamente en el navegador, se pueden utilizar las funciones de control de salida para capturar el resultado de esta función y guardarlo, por ejemplo, en un string.


La verdad que he tratado de usar estas "funciones de buffer de salida" para tratar de almacenarlo en un string... pero no lo consigo!!!
He probado cosas como:

Código PHP:
Ver original
  1. $string = ob_get_flush(eval($row['titulo']));
etc...

¿alguien podría ayudarme?

Gracias.
__________________
Follow me on twitter @franbedia
  #2 (permalink)  
Antiguo 05/05/2014, 06:50
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 8 meses
Puntos: 292
Respuesta: Capturar resultado de eval() y almacenar en string

Amigo:

- Por que usas eval() en primer lugar ? hay mil formas mas seguras de hacer las cosas que con eval

- ob_get_flush() esta mal utilizado pues ni siquiera acepta parametros (void)...


No haz intentado hacer lo mismo de un modo menos risgoso ?
__________________
Salu2!
  #3 (permalink)  
Antiguo 05/05/2014, 07:56
Avatar de fbedia  
Fecha de Ingreso: julio-2010
Mensajes: 159
Antigüedad: 14 años, 5 meses
Puntos: 8
Respuesta: Capturar resultado de eval() y almacenar en string

Cita:
Iniciado por Italico76 Ver Mensaje
Amigo:

- Por que usas eval() en primer lugar ? hay mil formas mas seguras de hacer las cosas que con eval

- ob_get_flush() esta mal utilizado pues ni siquiera acepta parametros (void)...


No haz intentado hacer lo mismo de un modo menos risgoso ?
No he visto otra alternativa al eval() para mi propósito... aunque el ejemplo parezca simple, en verdad se trata de algo mas complejo :(
__________________
Follow me on twitter @franbedia
  #4 (permalink)  
Antiguo 05/05/2014, 10:36
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Capturar resultado de eval() y almacenar en string

Supongo que has tenido en cuenta lo que dice el manual de referencia de PHP, ¿no?:
Cita:
Precaución

El constructor de lenguaje eval() es muy peligroso porque permite la ejecución de código de PHP arbitrario. Su uso está totalmente desaconsejado. Si se ha verificado cuidadosamente que no existe otra opción que usar este constructor, se ha de poner especial atención en no pasar ninguna información proporcionada por el usuario a esta función sin haberla validado apropiadamente con anterioridad.
Mi duda: ¿No sería más seguro guardar separadamente los datos, y no el código PHP, programando luego con más detalle lo que necsitas.
Personalmente no termino de ver cuál es la necesidad funcional de guardar ese PHP en la tabla, más allá de "ahorrarte" alguna que otra línea.
¿Podrías explicarnos por qué consideras necesario hacerlo?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 05/05/2014, 10:51
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 8 meses
Puntos: 292
Respuesta: Capturar resultado de eval() y almacenar en string

Te voy a dar un ejemplo donde quizas podrias querer usar eval() en un principio aunque siempre es mejor hacer otra cosa:

He llegado a considerar usar eval() para que usuarios creen sus propias funciones matematicas en un sitio bursati.

En mi caso hubiera sido mas seguro implementar un analizador sintactico y seguro que en tu caso tienes 1000 otras posibilidades.


---
Por cierto, eval() y create_function() estan deshabilidadas en muchos hostings..... por que sera ?
__________________
Salu2!

Última edición por Italico76; 05/05/2014 a las 10:58

Etiquetas: almacenar, eval, resultado, string, tabla
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 20:42.