Foros del Web » Programando para Internet » ASP Clásico »

codigo fuente en un campo de una base de datos

Estas en el tema de codigo fuente en un campo de una base de datos en el foro de ASP Clásico en Foros del Web. Buenas a todos, Se me ha ocurrido dinamizar una pagina web leyendo parte del código (html, Javascript, ASP) desde una BD y utilizar las instrucciones ...
  #1 (permalink)  
Antiguo 18/06/2006, 06:05
 
Fecha de Ingreso: diciembre-2003
Ubicación: Santander
Mensajes: 81
Antigüedad: 20 años, 6 meses
Puntos: 1
codigo fuente en un campo de una base de datos

Buenas a todos,

Se me ha ocurrido dinamizar una pagina web leyendo parte del código (html, Javascript, ASP) desde una BD y utilizar las instrucciones eval o execute. Me parece fácil y muy útil.

Imaginad tener varias plantillas de paginas web en una BD y según se llama a una plantilla, procesar (ejecutar y mostrar) las lineas (imagen, texto, campo de una BD, linea, cuadro, ...) de esa plantilla en el explorador.

El problema surge en la utilidad que he desarrollado para "rellenar" la BD. Me confunde los simbolos del código a grabar en la BD con los propios de la página que edita el registro de la BD. He probado con "escape" y "unescape", lo hace bien al añadir el codigo a la BD, pero cuando edito ese registro y hago el "unescape" del codigo para mostrarlo, mi página de edición se vuelve loca. ¿Hay alguna forma de indicarle que no "interprete" un trozo de codigo?.

No sé si debería postear este mensaje aquí o en el foro de JavaScript, pero que dado que lo que sea que se tenga que hacer se debrá ejecutar en el lado del servidor, aquí está.

He buscado este tema pero no encuentro referencia alguna.
  #2 (permalink)  
Antiguo 18/06/2006, 08:03
Avatar de trasgukabi  
Fecha de Ingreso: septiembre-2004
Mensajes: 2.749
Antigüedad: 19 años, 9 meses
Puntos: 18
y las funciones para qué están? mucho más fácil y más útil.
  #3 (permalink)  
Antiguo 18/06/2006, 09:56
Avatar de El_Metallick  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago, Chile
Mensajes: 1.718
Antigüedad: 21 años, 7 meses
Puntos: 16
mmmm a ti te gusta trabajar todo de la base de datos... mira la verdad de las cosas que para lo que haces yo usaria constantes a modo de skins de mi sitio... de tal forma que si el usuario cambia el skin con un simple select case pueda incluir el archivo con las constantes necesarias... saludos
__________________
Haz la guerra en la cama y el amor donde se te de la gana...
El tiempo es el mejor maestro, lo único malo es que te mata...¡¡Aprovecha tu tiempo!!
  #4 (permalink)  
Antiguo 18/06/2006, 10:12
 
Fecha de Ingreso: diciembre-2003
Mensajes: 141
Antigüedad: 20 años, 6 meses
Puntos: 0
Quizás no entendí muy bien el planteamiento, ¿pero no sería más apropiado realizarlo con css?
Dependiendo de que hoja de estilos selecciones, formateas la página.

Saludos!
  #5 (permalink)  
Antiguo 18/06/2006, 11:33
Avatar de El_Metallick  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago, Chile
Mensajes: 1.718
Antigüedad: 21 años, 7 meses
Puntos: 16
tambien... pero a lo que voy es que dentro del archivo skin este todo lo referido a lo grafico del sitio llamese css imagenes y todo eso
__________________
Haz la guerra en la cama y el amor donde se te de la gana...
El tiempo es el mejor maestro, lo único malo es que te mata...¡¡Aprovecha tu tiempo!!
  #6 (permalink)  
Antiguo 18/06/2006, 11:56
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Genera un xml con los datos necesarios y dale formato con xsl
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #7 (permalink)  
Antiguo 19/06/2006, 04:16
 
Fecha de Ingreso: diciembre-2003
Ubicación: Santander
Mensajes: 81
Antigüedad: 20 años, 6 meses
Puntos: 1
Apreciados amigos,

Mi pregunta no era si mi diseño funcional estaba bien, o no, o que solución le daríais, la pregunta es como puedo tratar el contenido de una variable que contiene un literal que es un codigo fuente, que no quiero que se ejecute en la pagina que lo edita a traves de un textarea. ¿Y si es que en vez de hablar de páginas web, lo que quiero es una colección de plantillas de emails con body en formato html, u otra aplicacion ...?

Trasgukabi, tienes razón, ¿las funciones para que estan?, ¿conoces alguna que haga lo que pido?.

Metallick, si quiero editar el contenido de las lineas de código, ¿como voy a usar constantes?. Si las constantes son para los nombres de cada plantilla, ¿voy a limitar mi diseño a las plantillas de mi corta imaginación?¿No sería bueno que el usuario pudiera crear las plantillas que necesitara?

NeoZ, no hablo de cambiar un estilo de fuente, de usar capas, ... Quiero poder poner cualquier cosa en dichas plantillas, imagenes, textos con formato css, listados extraidos de una tabla, .... cualquier cosa...

Alguien ha oido hablar de los erp (SAP, ...), pues se trata de algo así.

u_goldman, desconozco en profundidad las tecnologías xml y xsl, pero se me antoja que no son lo que necesito. Necesito solucionarlo con ASP, JavaScript VBScript o HTML. Quizas más adelante, cuando lea más sobre otras tecnologías, cambie mi diseño por otro mas optimo, adecuado, .... Soy partidario de que lo mejor es enemigo de lo bueno.

Gracias a todos por contestar, pero necesito mas ideas....
  #8 (permalink)  
Antiguo 19/06/2006, 07:22
 
Fecha de Ingreso: diciembre-2003
Mensajes: 141
Antigüedad: 20 años, 6 meses
Puntos: 0
Bueno, yo lo que hago normalmente cuando quiero guardar código en una BBDD (o en variables), por ejemplo código HTML, uso funciones que me he fabricado con "Replace" cambiando trozos de código que me van a ocasionar problemas (Comillas, etc...) y luego al llamarlos de la BBDD, vuelvo a realizar el "Replace" a la inversa.

Saludos.
  #9 (permalink)  
Antiguo 19/06/2006, 08:44
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Bueno, lo que tu vas a hacer es re-inventar la rueda, si nada mas se trata de poner elementos donde tu quieras con el diseño que quieras, XML y XSL es tu solución, pero bueno, cada quien.

Aún así no entiendo cual es la razon para grabar código en la base de datos. Si explicas un poco más quizás te podemos recomendar una solución para lo que quieres hacer.
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #10 (permalink)  
Antiguo 19/06/2006, 09:56
 
Fecha de Ingreso: diciembre-2003
Ubicación: Santander
Mensajes: 81
Antigüedad: 20 años, 6 meses
Puntos: 1
u_goldman y NeoZ, gracias por vuestro tiempo.

Estoy haciendo una web en la que, entre otras aplicaciones, envia eMails automaticos, como medida antiSpam no permito que se vean las direcciones de correo de mis usuarios, es decir presento un formulario idem OutLook pero sin el destinatario, que informo y envio el mail de forma "silenciosa", claro que con un frame corporativo que proviene de una plantilla. Cuando tengo que renovar suscripciones, quiero enviar mails con un mismo formato pero con información diferente en ciertos casos. De hecho no es una sola web, es un código que sirve para varias web pero que todas usan el mismo código. Tengo un modulo de estadisticas que funciona del mismo modo, muestro por pantalla o envío por mail la informacion, una sola plantilla para todas las web pero con información (titulo, colores, columnas,....) diferente para cada trinomio web-empresa-usuario. Mi solucion es re-dinamizar los contenidos (cómo la re-rueda) en funcion de datos en tablas. El rendimiento de la maquina de desarrollo (PIV1,7/256/40IDE) es buena, en explotacion tengo un Dual Xeon a 2,6 con 2 Gb de RAM Rambus y un raid SCSI UltraWide 2 160 con lo que no creo que tenga problemas, la tabla mas grande puede llegar a tener 1 millon de registros, al trabajar con MySQL, todo ha ido OK en las pruebas realizadas. Así que por máquina no va a ser.

Desconozco completamente xml y xsl, ¿que soluciones aportan?

En cuanto al replace (idem escape-unescape), no me sirve, el explorador interpreta la parte de codigo que le da la gana (cuando lo que quiero es que solo lo edite como un texto) cuando lo muestra al usuario, es decir en tiempo de salida.

¿Os he dado las gracias ya?
  #11 (permalink)  
Antiguo 19/06/2006, 10:22
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Ok, a ver si te entendí...

Las plantillas no cambian, es decir, el formato es el mismo para todos los mails, solo cambian los contenidos, de acuerdo a la empresa, cambiarás el diseño de estos contenidos, si estoy en lo correcto, entonces me parece que no tendrás mas que definir ciertos estilos css, de acuerdo a esto le podrás dar el formato que requieras, estilo1, estilo2, estiloN.

El problema que yo le veo a esto es que en el email tendrás que "hardcodear" estos estilos, pero muchas veces los emails están configurados para no leer el HTML, cosa que no podrás controlar, ahora con respecto al front end, pues no deberías tener problema al hacerlo con diferentes estilos, no se si esto abarca especificamente tu problema, pues aún no entiendo para que guardas código en tu base de datos.


Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #12 (permalink)  
Antiguo 19/06/2006, 10:58
 
Fecha de Ingreso: diciembre-2003
Ubicación: Santander
Mensajes: 81
Antigüedad: 20 años, 6 meses
Puntos: 1
Imagina que quiero poner un <div> con cierto estilo pero que contenga el nombre del sitio web y un link a la url del sitio-empresa que recupero de una BD para cada empresa en funcion de una variable session. Y que además para cada empresa, el logo corresponde a una imagen (.jpg) diferente. Una empresa vende coches y la otra revistas. Por lo que las columnas de los iformes serán diferentes. Ademas quiero que el usuario, dentro de unas restricciones, pueda "configurar" dichos informes. Para guardar todo esto, necesito de una BD.
  #13 (permalink)  
Antiguo 19/06/2006, 11:08
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Código:
<head>
<link rel="STYLESHEET" type="text/css" href="<%=Application("website_url") & "/css/"&"style_"&session("cssclass")&".css"%>">
</head>
<div class="frame">
   <img src="<%=Application("website_url")%>/images/logo.jpg" alt="<%=Application("organization_name")%>"/>
   <br />
   <a href="<%=Application("website_url")%>"><%=Application("organization_name")%></a>
</div>
Hasta ahora solo utilicé una variable de sesión y dos de aplicación, para determinar el css a utilizar y para tener la URL del sitio, hasta el momento no he tenido que "pegarle" a la base de datos para extraer ningún código.
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #14 (permalink)  
Antiguo 20/06/2006, 04:53
 
Fecha de Ingreso: diciembre-2003
Ubicación: Santander
Mensajes: 81
Antigüedad: 20 años, 6 meses
Puntos: 1
u_goldman, imagina que quiero generar documentos pdf con fpdf, y que tengo una tabla con cada cosa que quiero poner en el documento. En el caso de que quiera recuperar un dato de mis otras tablas (pe. nombre cliente), sólo tengo que poner un trocito de codigo en mi tabla de "cosas al documento". Así tengo solo un codigo que me sirve para tantos documentos como quiera. Pero quiero realizar una utilidad para crear documentos-plantilla. Ahí surge mi problema.
  #15 (permalink)  
Antiguo 20/06/2006, 08:24
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
carlos123, entiendo la problemática, el ejemplo anterior fué solamente algo escueto para recordar que no siempre todo tiene que ir en una base de datos, ahora, con respecto a recuperarlos, hay varias cosas que se pueden hacer antes de guardar código en una base de datos, según entiendo, tu problema en realidad son 2.

1. Crear las plantillas en base a un determinado cliente
2. Aplicar diseño a los contenidos.

Yo no se como funciona fpdf(nunca lo he usado), pero si lo que le pasas es HTML, entonces omite esa parte porque no nos interesa, lo único que haremos es que el HTML quede bien cierto? después lo que hagamos con él, pues es nuestro problema y a ASP no le interesa.

Con respecto a la aplicación de diseño, la solución a mi me sigue pareciendo la planteada anteriormente: css.

Ahora para los datos, acertadamente trasgukabi ya te mencionó que para eso existen las funciones, y me parece que es válido, necesitarás uno o más métodos para extraer los datos que tu quieras de donde tu así lo quieras, y te recomendaría nuevamente que le eches un vistazo a xml-xsl, ya que si regresas esos datos en xml, sería relativamente sencillo aplicarle el diseño con un xsl dependiendo de la empresa, justo como aplicamos los css.

Bueno, esa es mi aportación y espero te sirva.

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #16 (permalink)  
Antiguo 20/06/2006, 08:42
 
Fecha de Ingreso: diciembre-2003
Ubicación: Santander
Mensajes: 81
Antigüedad: 20 años, 6 meses
Puntos: 1
Me mirare xml-xsl con cariño ya que me lo recomiendas. Como trabajar con funciones (propias del lenguaje y las creadas por mi) es una buena idea tanto para estructurar como para mantener, de hecho estan implementadas en mi código.

FPDF es una clase que tiene una función para cada "cosa" que quieres poner en un pdf, y finalmente lo crea, muy util para enviar documentación por mail o permitir al usuario ver, guardar, imprimir, ... documentos. Para trabajar con él solo tienes que llamar a la funcion que quieres (linea, cuadro, imagen, celda, ...) con los parametros que necesitas y listo. Es un buena solución OpenSource y Free, con resultados profesionales.

Yo me planteo tener plantillas predefinidas y una funcion que lea la plantilla y con un select case ir montando el documento. Cada "cosa" del documento es un registro en la BD y listo.

Repito que mi problema no es de diseño, aunque porque tú insistes, mirare las tecnologias xml-xsl aunque me falta un poco de tiempo.

Mi problema es que quiero poner en un campo de la taba algo como:

response.write("<a href="&getSettingKey("link sitio")&" target=';_self' class='Titulo'>"&getSettingKey("titulo sitio")&"</a>")

lo codifico para no tener problemas con ADO y lo guardo como:

response.write("<a href="&getSettingKey("link sitio")&" target='_self' class='Titulo'>"&getSettingKey("titulo sitio")&"</a>")

ya que las comillas simples son un problemilla en la sentencia SQL.

pero cuando el ASP lee este codigo, para editarlo porque en ejecución todo va de maravilla, produce un resultado no deseado. Lo confunde con el propio html de la página.

Mi pregunta es si existe alguna forma conocida de decirle al navegador que lo que contiene un textarea no lo ha de interpretar, sino que lo debe tratar como un literal de texto plano.

Solo era eso.

Un saludo.
  #17 (permalink)  
Antiguo 20/06/2006, 08:49
 
Fecha de Ingreso: diciembre-2003
Ubicación: Santander
Mensajes: 81
Antigüedad: 20 años, 6 meses
Puntos: 1
Increible, lo codificado en el textarea de respuesta rápida, tambien lo interpreta como me pasa a mi. Me he dado cuenta porque he cometido un error de tipografia, si te fijas justo antes del _self hay un punto y coma y en donde digo que está codificado no está. Es porque uso el &loquesea; para las comillas simples y al copy-paste en el textarea y tipear el codigo como no codificado he olvidado borrar el ";", sin embargo en el texto en el tema aparece como decodificado.

Como está hecho para que no se vuelva loca la pagina del tema?????
  #18 (permalink)  
Antiguo 20/06/2006, 08:50
 
Fecha de Ingreso: diciembre-2003
Ubicación: Santander
Mensajes: 81
Antigüedad: 20 años, 6 meses
Puntos: 1
¿Verdad que guardais las respuestas en una tabla?
  #19 (permalink)  
Antiguo 20/06/2006, 08:51
 
Fecha de Ingreso: diciembre-2003
Ubicación: Santander
Mensajes: 81
Antigüedad: 20 años, 6 meses
Puntos: 1
¿que pasaría si pongo

<script>
window.location='http://www.google.es'
</script>
  #20 (permalink)  
Antiguo 20/06/2006, 08:52
 
Fecha de Ingreso: diciembre-2003
Ubicación: Santander
Mensajes: 81
Antigüedad: 20 años, 6 meses
Puntos: 1
Y con ¿?
<script>
window.close()
</script>
  #21 (permalink)  
Antiguo 20/06/2006, 08:53
 
Fecha de Ingreso: diciembre-2003
Ubicación: Santander
Mensajes: 81
Antigüedad: 20 años, 6 meses
Puntos: 1
A mi se me cierra la ventana.......
  #22 (permalink)  
Antiguo 20/06/2006, 11:20
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Cita:
response.write("<a href="&getSettingKey("link sitio")&" target=';_self' class='Titulo'>"&getSettingKey("titulo sitio")&"</a>")
Pero insisto...por qué?
Si es necesario, create una función para hacer este link o cualquier otro, pásale los parámetros necesarios, y hazle un response.write directamente a la función, la verdad no entiendo la razón para ejecutar código desde la base de datos.

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #23 (permalink)  
Antiguo 20/06/2006, 11:42
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 3 meses
Puntos: 535
A ver... por favor no apalearme si es que estoy diciendo una burrada porque no leí el tema completamente y con detenimiento pero...

Cita:
Mi pregunta es si existe alguna forma conocida de decirle al navegador que lo que contiene un textarea no lo ha de interpretar, sino que lo debe tratar como un literal de texto plano.
Te estarás refiriendo a algo como esto?

Código:
codigo = "<script>window.close(&quot;&quot;)</script>"
Response.Write "<textarea>" & Server.HTMLEncode(codigo) & "</textarea>"
__________________
...___...
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 21:25.