Foros del Web » Programando para Internet » PHP »

¿Alguien sabe porque pasa esto?

Estas en el tema de ¿Alguien sabe porque pasa esto? en el foro de PHP en Foros del Web. Hola a todos, vereis me estoy volviendo loco. El tema es que en la base de datos guardo un texto el cual contiene etiquetas <div> ...
  #1 (permalink)  
Antiguo 28/07/2012, 10:09
Avatar de manuparquegiralda  
Fecha de Ingreso: junio-2012
Ubicación: Barcelona
Mensajes: 241
Antigüedad: 12 años, 4 meses
Puntos: 39
¿Alguien sabe porque pasa esto?

Hola a todos, vereis me estoy volviendo loco. El tema es que en la base de datos guardo un texto el cual contiene etiquetas <div> y <? ?>, para cuando despues lo implemento cargando por ajax me muestre texto las dicvisiones y demas.

Lo curioso es que cuando cargo el campo de la BD que hay guardado un texto algo asi:

""hola que tal a todos <div><?php echo redimensionar(""); ?></div>""

Al cargarlo el navegador me sustituye automaticamente la etiqueta php (<? ?>) por la etiqueta de un comentario HTML (<--?php echo redimensionar(""); ?-->). El navegador automaticamente me lo pone como si fuera un comentario HTML, por lo que obviamente no me ejecuta la funcion php.

¿Es posible solucionar este tema o me tengo que comer la cabeza para hacer que la funcion que quiero que haga me la haga en el script?

Gracias a todos.
  #2 (permalink)  
Antiguo 28/07/2012, 10:16
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: ¿Alguien sabe porque pasa esto?

Eso pasa porque dicho código php no está en el contexto correcto de evaluación, lo tienes almacenado como cadena de texto y lo imprimes como cadena de texto, ya no es código desde el momento en que lo guardaste como texto.

Si quieres evaluarlo usa la función eval(), en fin.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 28/07/2012, 21:55
Avatar de gildus  
Fecha de Ingreso: agosto-2003
Mensajes: 1.495
Antigüedad: 21 años, 3 meses
Puntos: 105
Respuesta: ¿Alguien sabe porque pasa esto?

Holas,

Tambien porque no lo usas asi:

Código PHP:
Ver original
  1. echo 'hola que tal a todos <div>'. redimensionar(""). '</div>';

Saludos
__________________
.: Gildus :.
  #4 (permalink)  
Antiguo 29/07/2012, 01:19
Avatar de manuparquegiralda  
Fecha de Ingreso: junio-2012
Ubicación: Barcelona
Mensajes: 241
Antigüedad: 12 años, 4 meses
Puntos: 39
Respuesta: ¿Alguien sabe porque pasa esto?

Cita:
Iniciado por pateketrueke Ver Mensaje
Eso pasa porque dicho código php no está en el contexto correcto de evaluación, lo tienes almacenado como cadena de texto y lo imprimes como cadena de texto, ya no es código desde el momento en que lo guardaste como texto.

Si quieres evaluarlo usa la función eval(), en fin.
Gracias por tu respuesta amigo, pero el problema no es que me lo lea como una cadena de texto. No deberia, porque al cargarlo el navegador deberia reconocer la etiqueta <?php ?> al igual que reconoce la etiqueta <div> </div> el problema es que el navegador al leer <?php, me pone automaticamente dos guiones entre el signo "<" y "?" y carga esto "" <--?php ?-->. Claro, al poner los dos guiones automaticamente me lo reconoce no como una cadena o string, si no como un comentario HTML de estos que se utilizan para guiarte pero que no se imprimen en pantalla. Es decir dentro de la etiqueta <div> </div>, que si me la reconoce directamente de la variable, no me aparece un texto con "<? echo redimensionar(); ?>", si no que me aparece un comentario HTML asi: <--? echo redimensionar(); ?--> que no se imprime en la pantalla, solo lo puedo ver en el codigo fuente.

La pregunta es porque el navegador me cambia atumaticamente la etiqueta php al cargarla en lugar de dejarla como esta y reconocerla como PHP.
  #5 (permalink)  
Antiguo 29/07/2012, 01:44
 
Fecha de Ingreso: julio-2012
Mensajes: 30
Antigüedad: 12 años, 3 meses
Puntos: 7
Respuesta: ¿Alguien sabe porque pasa esto?

pateketrueke tiene razón, debes utilizar la función eval() de php para que el texto que contenga código de éste tipo sea tratado como tal, y no como un string.

Acerca de tu última respuesta, el navegador nada que ver con php ya que sólo recibe el html y javascript que el php genera. Es decir, HTML significa HyperText Markup Language y PHP significa Hypertext Pre-processor. En otras palabras, el php sólo genera HTML y sus respectivas etiquetas como script, etc. (además de las sesiones y otras cosas, pero la función principal es esa).

Así que, la función que realmente esta colocando el texto con las líneas de comentario de tipo html es la función "echo" del php, por lo que regresando al primer párrafo, debes utilizar la función eval()

Ah y como sugerencia, no es recomendable guardar en la base de datos código como tags html ó php (que vaya a ser evaluado), por motivos de seguridad.
  #6 (permalink)  
Antiguo 29/07/2012, 03:00
Avatar de manuparquegiralda  
Fecha de Ingreso: junio-2012
Ubicación: Barcelona
Mensajes: 241
Antigüedad: 12 años, 4 meses
Puntos: 39
Respuesta: ¿Alguien sabe porque pasa esto?

Cita:
Iniciado por cvelazquez Ver Mensaje
pateketrueke tiene razón, debes utilizar la función eval() de php para que el texto que contenga código de éste tipo sea tratado como tal, y no como un string.

Acerca de tu última respuesta, el navegador nada que ver con php ya que sólo recibe el html y javascript que el php genera. Es decir, HTML significa HyperText Markup Language y PHP significa Hypertext Pre-processor. En otras palabras, el php sólo genera HTML y sus respectivas etiquetas como script, etc. (además de las sesiones y otras cosas, pero la función principal es esa).

Así que, la función que realmente esta colocando el texto con las líneas de comentario de tipo html es la función "echo" del php, por lo que regresando al primer párrafo, debes utilizar la función eval()

Ah y como sugerencia, no es recomendable guardar en la base de datos código como tags html ó php (que vaya a ser evaluado), por motivos de seguridad.
Ya pero con la funcion eval, no consigo que me devuelva la funcion redimensionar, de todos modos gracias por vuestras respuestas, pero he buscado otra solucion al problema que tenia.

Si se que no es aconsejable guardar tags en la BD, pero no lo hago para los usuarios, es una pagina donde mustro noticias y dentro de esas noticias intercalado en el texto van fotografias que pueden ir de varias maneras, intercaladas en el texto o flotantes. Entonces me he hecho un formulario donde en el mismo textArea como en este de este foro, le das a un boton de insertar imagen y te inserta un tag con un class, segun quiera colocar la imagen y la funcion a la que llamo es una que se encarga de encuadrarme la imagen en el tag para que no se distorsione y se muestre centrada. De esta manera cuando quiero guardar una noticia en la web, lo puedo hacer directamente rellenando un formulario y al cargarlas me las muestra en la pagina.

Pero igualmente no entiendo que riesgo puede tener guardar en la BD en un campo medium text un tag HTML.. ¿Sabrias explicarmelo? Gracias.
  #7 (permalink)  
Antiguo 29/07/2012, 10:21
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: ¿Alguien sabe porque pasa esto?

Cita:
Iniciado por manuparquegiralda Ver Mensaje
Pero igualmente no entiendo que riesgo puede tener guardar en la BD en un campo medium text un tag HTML.. ¿Sabrias explicarmelo? Gracias.


No no, no te confundas.

El html no es peligroso ni en 100 años.

Es peligroso permitir almacenar código php para posteriormente evaluarlo, sólo eso.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #8 (permalink)  
Antiguo 30/07/2012, 00:05
 
Fecha de Ingreso: julio-2012
Mensajes: 30
Antigüedad: 12 años, 3 meses
Puntos: 7
Respuesta: ¿Alguien sabe porque pasa esto?

Exacto, el php es peligroso (para los archivos del lado del servidor claro, ah y db) hehehe. Ah y el html en sí no, salvo que fuera un js para robar sesiones, etc. Lo cua solo afectaría del lado del cliente (salvo que usaras un server como nodejs, pero es otra historia)

Etiquetas: html
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 22:19.