![]() |
paginacion con classes, correccion del viejo :arriba: create un class.asp: :cool: <% Class paginado Public pagina Public cnn Public error Public por_pagina Public total_registros Public consulta Public orden_lista Public rs Public desde Public encabezado Public ancho_encabezado Public alineacion Public ancho Function paginar() If IsEmpty(Me.cnn) then paginar = False Err.Description = "No Conection with the Database" Exit Function End if If isEmpty(Me.consulta) then paginar = False Err.Description = "No se especificó la consulta sobre la Base de Datos" Exit Function End if 'VALORES POR DEFECTO Me.pagina = Request.ServerVariables("URL") If isEmpty(Me.por_pagina) then Me.por_pagina = 50 End if If isEmpty(Me.desde) then Me.desde = 0 End if If isEmpty(Me.alineacion) then Me.alineacion = "center" End if If isEmpty(Me.ancho) then Me.ancho = "100%" End if 'FIN DE VALORES POR DEFECTO set Me.rs = Server.CreateObject("ADODB.Recordset") Me.rs.Open Me.consulta,Me.cnn,3,1 Me.total_registros = Me.rs.RecordCount ban_error = 0 If Me.total_registros > 0 then Me.rs.Move Me.desde inicio = Me.rs.Bookmark table = Me.rs.GetRows(Me.por_pagina,inicio) else ban_error = 1 end if Me.rs.Close() set Me.rs = Nothing If ban_error <> 1 then encabezado = split(Me.encabezado,",") ancho_enc = split(Me.ancho_encabezado,",") orden_lista = split(Me.orden_lista,",")%> <table border=0 align="<%=Me.alineacion%>" width="<%=Me.ancho%>"> <tr> <%For k=0 to Ubound(encabezado)%> <td bgcolor="#FFFFCC" width="<%=ancho_enc(k)%>" align="center"> <font size='1' face='verdana'><b><a href="<%=Me.pagina%>?orden=<%=orden_lista(k)%>"><% =encabezado(k)%></a></font></b> </td> <%Next%> </tr> </table> <table border=0 align="<%=Me.alineacion%>" width="<%=Me.ancho%>"> <%For i=0 to Ubound(table,2) Response.Write("<tr>") For j=0 to Ubound(table,1) Response.Write "<td width=" & ancho_enc(j) &"><font size='1' face='verdana'>" if j=0 then response.write "<a href='customers.asp?id="&table(0,i)&"'>" end if if j=3 then response.write "<a href='mailto:"&table(3,i)&"'>" end if response.write table(j,i) & "</a></font></td>" Next Response.Write("</tr>") Next Response.Write("</table>") If Ubound(table,2)+1 < Me.total_registros then 'En caso afirmativo calculamos el nº de páginas que tenemos 'y luego mostramos los links a las demás páginas If (Me.total_registros mod Me.por_pagina) = 0 then nro_paginas = Int(Me.total_registros / Me.por_pagina) else nro_paginas = Int(Me.total_registros / Me.por_pagina) + 1 end if%> <table border=0 width="<%=Me.ancho%>" align="<%=Me.alineacion%>" cellspacing=0> <tr> <td bgcolor="#EEEEEE" > <strong><font size="1" face="Verdana, Arial, Helvetica, sans-serif"> <%'Acá mostramos los links de la forma: Página 1 | 2 | 3 | 4 ...%> Page <%For i=0 to nro_paginas-1%> <%If Me.desde = i*Me.por_pagina then%> <font title="Page"><%=i+1%></font></font> <font size="1" face="Verdana, Arial, Helvetica, sans-serif"> <%else%> <a href="<%=Me.pagina%>?orden=<%=session("orden_lista ")%>&ref=<%=i*Me.por_pagina%>" class="e" title="go to page <%=i+1%>"><%=i+1%></a> <%end if%> <%If i < nro_paginas-1 then Response.Write(" | ") end if Next%> </font></strong></td> <td bgcolor="#EEEEEE"> <strong><font size="2" face="Arial, Helvetica, sans-serif"> <% a = Me.desde + Me.por_pagina b = Me.desde - Me.por_pagina if (Me.desde = 0) and (Ubound(table,2)+1 < Me.total_registros) then%> <a href="<%=Me.pagina%>?orden=<%=session("orden_lista ")%>&ref=<%=a%>" title="See <%=Me.por_pagina%> Next" class="e">Next >></a> <%end if if (Me.desde+Me.por_pagina < Me.total_registros) and (Me.desde <> 0) then%> <a href="<%=Me.pagina%>?orden=<%=session("orden_lista ")%>&ref=<%=b%>" title="See <%=Me.por_pagina%> Back" class="e"><< Back</a> | <a href="<%=Me.pagina%>?ref=<%=a%>" title="See <%=Me.por_pagina%> Next" class="e">Next >></a> <%elseif (Me.desde <> 0) then%> <a href="<%=Me.pagina%>?orden=<%=session("orden_lista ")%>&ref=<%=b%>" title="See <%=Me.por_pagina%> Back" class="e"><< Back</a> <%end if%> </font></strong></td> </tr> </table> <%end if End if End Function End Class%> luego donde vas a paginar: :cool: <% orden=request.querystring("orden") if orden="" or orden=null then orden="regdate" end if session("orden_lista")=orden strConnection = "DSN=xxxxx;UID=xxxxx;PWD=xxxxx" Set cnn = Server.CreateObject("ADODB.Connection") cnn.Open strConnection set rs = new paginado rs.cnn = cnn '* Conexión a la base de datos if custo<>"" then rs.consulta = "SELECT custid, fname,lname, email, country, referencias,regdate FROM customers where fname like '%"&custo&"%' or lname like '%"&custo&"%' or email like '%"&custo&"%'" else rs.consulta = "SELECT custid, fname,lname, email, country, referencias,regdate FROM customers order by "&orden&" desc" end if rs.desde = Int(Request.Querystring("ref")) '* Registro desde donde comienza el paginado, dejar como está rs.por_pagina = 50 'Cantidad de Registros por página (10 por defecto) rs.encabezado = "Id,Name,Lastname,Email,Country,Reference,Registed " '*Texto de cada Columna de datos rs.orden_lista = "custid,fname,lname,email,country,referencias,regd ate" rs.ancho_encabezado = "3%,5%,5%,15%,10%,15%,15%" '*Ancho de cada Columna de datos (pixeles o porcentaje) rs.alineacion = "center" 'Alineación de la tabla que muestra los datos ("center" por defecto) rs.ancho = "90%" 'Ancho de la tabla que muestra los datos (100% por defecto) rs.paginar() '* Método que realiza la paginación y genera la tabla If Err.Description <> "" then%> <center> <font class=texto_error><b>Error</b>: <%=Err.Description%></font> </center> <br> <%end if set rs = Nothing %> |
Asistente de Consulta a BD en WEB ¿Cómo hacer un asistente de consultas en WEB con SQLServer? Ver Ejemplo: Ejemplo Visita esta liga. Asistente de consultas |
Subir archivos sin componentes Otra opcion aparte del xelUpload es: http://www.soloasp.com.ar/vermensaje...14082&idforo=1 Lo he probado y funca bien, pero con fotos pesadas se cuelga. ;-) :arriba: |
Otra conexión a interbase Como la conexion que publicó el amigo Lexus no me funciono o no iba con este driver o que se yo.... set objconn = server.createobject("ADODB.Connection") set objRS = server.createobject("ADODB.recordset") objconn.Open "PROVIDER=MSDASQL;" & _ "DRIVER={Gemini InterBase ODBC Driver 2.0};" & _ "SERVER=localhost;" & _ "UID=sysdba;PWD=masterkey;" & _ "DataBase=localhost:F:\basesrrgg\dbger2.GDB;" De esta forma a mi me anduvo... Salute... |
OK esto no es una pregunta frecuente pero es muy util: Cuando ejecutas una pagina ASP y te da algun error generalmente lo identifica con un numero, entra a la pagina de microsoft http://www.microsoft.com , y tipea el numero de error en el buscador, te mostrara todos los articulos relacionados con el erro y casi siempre la solucion. si el error es en un componente has lo mismo pero en la pagina del fabricante del componente. |
que componentes sopota mi servidor??' <% @ Language="VBScript" %> <% Option Explicit %> <% ' there are a number of objects that come with IIS4 ' these are put in the array that's declared below Dim theInstalledObjects(8) theInstalledObjects(0) = "MSWC.AdRotator" theInstalledObjects(1) = "MSWC.BrowserType" theInstalledObjects(2) = "MSWC.NextLink" theInstalledObjects(3) = "MSWC.Tools" theInstalledObjects(4) = "MSWC.Status" theInstalledObjects(5) = "MSWC.Counters" theInstalledObjects(6) = "IISSample.ContentRotator" theInstalledObjects(7) = "IISSample.PageCounter" theInstalledObjects(8) = "MSWC.PermissionChecker" Function IsObjInstalled(strClassString) On Error Resume Next ' initialize default values IsObjInstalled = False Err = 0 ' testing code Dim xTestObj Set xTestObj = Server.CreateObject(strClassString) If 0 = Err Then IsObjInstalled = True ' cleanup Set xTestObj = Nothing Err = 0 End Function %> <HTML> <HEAD> <TITLE>Test of installed objects</TITLE> </HEAD> <BODY> Enter the ProgId or ClassId of the component you want to test in the textbox below. If you leave it empty, the default components will be tested. <FORM action=<%=Request.ServerVariables("SCRIPT_NAME")%> method=post> <input type=text value="" name="classname" size=40> <INPUT type=submit value=Submit> <INPUT type=reset value=Reset> </FORM> <% Dim strClass strClass = Trim(Request.Form("classname")) If "" <> strClass then Response.Write strClass & " is " If Not IsObjInstalled(strClass) then Response.Write "<strong>not installed</strong>" Else Response.Write "installed!" End If Response.Write "<P>" & vbCrLf Else ' default: list all components that should be installed %> <TABLE BORDER=0> <% Dim i For i=0 to UBound(theInstalledObjects) Response.Write "<TR><TD>" & theInstalledObjects(i) & "</TD><TD>" If Not IsObjInstalled(theInstalledObjects(i)) Then Response.Write "<strong>not installed</strong>" Else Response.Write "installed!" End If Response.Write "</TD></TR>" & vbCrLf Next %> </TABLE> <% End If %> a continuacion un listado de otros componentes: AspImage.Image CDONTS.NewMail SOFTWING.AspTear AspHTTP.Conn JMail.SMTPMail aspZip.EasyZIP aspSmartZip.SmartZip aspSmartMail.SmartMail |
Acentos con SERVERXMLHTTP P: ¿Cómo mostrar los acentos cuando se utiliza XMLHTTP? R: Código PHP: |
Convertir fecha TimeStamp a dd/mm/aaaa P: Como puedo convertir en ASP una fecha en formato TimeStamp (entero de tipo long que contiene el número de segundos entre el valor Unix Epoch (1 de enero de 1970) y la hora especificada) al formato dd/mm/aaaa R: Código PHP: |
Convertir fecha con formato dd/mm/aaaa a formato TimeStamp P: Como puedo convertir en ASP una fecha en formato dd/mm/aaaa a TimeStamp R: Código PHP: |
Hacer Includes con Iframe Include con Iframe <% Dim url url = Request.QueryString("dir") if url = "" then url = "paginapordefecto.html" end if %> <IFRAME width="685" height="500" src="<%=url%>" name="url" border="0" frameborder="0"> </IFRAME> LINK = paginadeliframe.asp?dir=paginaquesedeseaincluir.ht ml |
Aqui teneis una tabla ASCII en ASP. A veces al trabajar con ASP necesitamos insertar caracteres especiales o simbolos (con CHR) a la hora de hacer response.write o response.document, y siempre nos volvemos locos buscando por algun libro una tabla ASCII. Pues bien aqui teneis una tabla ASCII en ASP. No he descubierto nada, pero quizas interese a alguien :-D <p align="center"><b><font face="Arial" size="5">Tabla ASCII</font><font size="5"> </font><font size="2"><br> Estos caracteres se obtienen con la tecla ALT + Código ASCII</font><font size="5"> </font></b></p> <table align="center" border="1" cellpadding="1" cellspacing="0"> <tr> <% for conta=1 to 255 response.write("<td valign=top align=center>") response.write(conta & "<br><b><font color=red>" & chr(conta)& "</font></b>" & "</td>") columnas=columnas+1 if columnas mod 25=0 then response.write("</tr><tr>") next %> </td></tr> </table> Aqui podeis ver el resultado. http://www.expansionweb.net/asp_pruebas/ascii.asp |
Imagenes almacenadas en bases de datos Mostrar una imagen almacenada en una base de datos http://www.asptutor.com/asp/vart.asp?id=54 Subir imágenes a una Base de datos http://www.asptutor.com/asp/vart.asp?id=129 |
ERRORES SQL |
Leer fichero de texto y contar las palabras <% 'Leer contenido de un fichero de texto en el servidor y contar las palabras set FSO = Server.CreateObject("Scripting.FileSystemObject") set oFich = FSO.OpenTextFile(Server.MapPath("prueba.txt")) texto= replace(oFich.ReadAll,chr(13), " ") oFich.Close set oFich = nothing Archivo = Split(texto," ") for palabras = 0 to ubound(archivo) response.write("Linea=" & palabras +1 & " - " & archivo(conta) &"<br>") next %> |
Error al conectar DB 80004005 Esta Faq les va a server de muhco ya que hay muchos errores de este tipo al momento de conectar la base de datos nos manda con diferentes mensajes este error 80004005 despues de varios dias de desvelo y que casi me cuesta mi chamba lo pude solucionar. El numero de error 80004005 cuando lo buscas en la base de datos de Microsoft, te dice que tienes mal hecha la conexion a la base que lo cambies de tal que no tengas este error. en algunos casos funciona bien pues tenemos pocas asp por que acabamos de iniciar el sitio. Yo tube que cambiar de proveedor de hosting y ahi fue donde todo trono y por logica no podia cambiar mas de 1000 asp en la forma que se conecta la base. bueno para no hacerlos esperar el problema radica en la version del Driver de las bases de datos y se soluciona corriendo esta utileria en la cual se descarga el Microsoft Data Access Components (MDAC) 2.7 Service Pack 1 Refresh, el cual lo que hace es actualizar driver y no se que tantas cosas pero con eso se soluciona. Ya no tube que modificar todo mi codigo asp de mi sitio gracias a este parche. Espero que les ayude esto para que puedan dormir tranquilos Saludos |
¿como puedo ocultar la URL de un ARCHIVO? NOTA: Este ejemplo sirve para archivos de extensión zip, pero cambiando SOLO una línea de código, podeis usar CASI cualquier archivo CREDITOS: ESTE CODIGO HA SIDO CREADO, PROBADO Y DESARROLLADO UNICA Y SOLAMENTE POR EPA5 (Fran Rubio). Se permite su uso libremente. Bueno amigos, primeramente teneis que escribir un archivo que se llama file.inc y dentro poneis el siguiente código Código: <%ejemplo de donwload.asp Código: <%@LANGUAGE="VBSCRIPT" CODEPAGE="CP_ACP"%>Un salu2 :adios: |
.- Agilizando la carga de tus páginas ASP P: ¿Como puedo agilizar la carga de mis páginas en ASP? R:En muchos casos, estas cargan lentamente ya que están programadas con algunos errores que llevan a sobrecargar los recursos del servidor dejando el sitio sin funcionar o con escasos recursos. Estado de las sesiones (Session State) Si no vamos a utilizar ninguna variable de tipo session dentro del sitio, podemos deshabilitarlas. Debemos ubicar las siguientes líneas al principio del archivo .asp: <% @ language = "VBScript" ENABLESESSIONSTATE = False %> Response.Buffer Esta línea le dirá al Servidor que ejecute todo el código después de enviar cualquier información al cliente. <% Response.Buffer = True %> Cerrar las conexiones y recordsets Cuando realizamos cualquier tipo de conexión debemos asegurarnos de cerrarla al finalizar el script. Además de practicar la codificación en ASP nos permite prevenir la corrupción de una base de datos Access. <% recorset.close conexion.close set recordset=Nothing set conexion=Nothing %> Option Explicit Usando esta opción es posible debuguear los scripts más rápidamente. Además ayudará a aprender a la fuerza la codificación en ASP, ya que habilitando esta opción deberemos declarar todas las variables. <% OPTION EXPLICIT %> |
Gráficos de barras con ASP La idea es realizar gráficos de barras horizontales y verticales, podemos utilizar estos gráficos para mostrar estadísticas o resultados de encuestas o votaciones de forma mas vistosa, para que vean como quedaría este ejemplo aplicado les muestro este gráfico... CODIGO FUENTE <p>Gráfico Horizontal</p> <table width="100%" border="0" cellspacing="2" cellpadding="0"> <tr><td> <% Dim ancho ancho = 240 Response.Write ("<img src=azul.gif width=" & ancho & " height=20>") %> </td></tr> <tr><td> <% ancho = 140 Response.Write ("<img src=rojo.gif width=" & ancho & " height=20>") %> </td></tr> <tr><td> <% ancho = 270 Response.Write ("<img src=verde.gif width=" & ancho & " height=20>") %> </td></tr> </table> El código ASP si se fijan esta mezclado con una tabla de 3 renglones (rows) y una columna (cols) obviamente si queremos hacer un gráfico horizontal debemos colocar las imágenes en los renglones de la tabla e ir modificando mediante código ASP su propiedad "width"... <% Dim ancho ancho = 240 Response.Write ("<img src=azul.gif width=" & ancho & " height=20>") %> Observen que "ancho" es una variable a la cual le dimos un valor de 240, y de que sirve? quizás a simple vista no se dan cuenta pero esa variable "ancho" puede ser el valor de un campo que hay en una base de datos el cual puede ir cambiando dinámicamente según el contexto, por ejemplo si trabajamos con un sistema de votación el valor de "ancho" seguramente ira variando a lo largo que se van desarrollando las votaciones. Quizás les sea mas cómodo un gráfico vertical, pues aquí el código... <p>Gráfico Vertical</p> <table width="19%" border="0" cellspacing="2" cellpadding="0" height="10"> <tr valign="bottom"> <td height="2"> <% Dim alto alto = 120 Response.Write ("<img src=azul.gif width=50 height=" & alto & ">") %> </td> <td height="2"> <% alto = 54 Response.Write ("<img src=rojo.gif width=50 height=" & alto & ">") %> </td> <td height="2"> <% alto = 60 Response.Write ("<img src=verde.gif width=50 height=" & alto & ">") %> </td> </tr> </table> Aquí es lo mismo que en el gráfico anterior pero en ves de poner los gráficos en los 3 renglones creamos una tabla de 1 renglón y 3 columnas y en estas colocamos los gráficos, otro cambio es que en ves de modificar la propiedad "width" modificamos "height". |
Como Detectar un plugin de Flash con ASP Con la función isObject de ASP podremos saber si el usuario tiene instalado un objeto determinado. Para determinar si el reproductor Shockwave Flash está o no instalado, deberemos utilizar el siguiente código: <% if isObject(createObject("ShockwaveFlash.ShockwaveFla sh")) then flash = "Flash está instalado" else flash = "Flash no está instalado" end if response.write flash %> |
Como 'Banear' Visitantes Molestos Hay una solución basada en puro código ASP para "banear" (to ban, echar fuera) algún visitante molesto al más puro estilo IRC de vuestras páginas. Si conocéis su IP (que se puede sacar de los logs del servidor), podéis poner el siguiente código: <% 'La IP es sólo un ejemplo!!! if Request.ServerVariables("REMOTE_ADDR")="200.200.14 .3.2" then Response.Buffer=True Response.Status=("401 Unauthorized") Response.End end if %> Que comprobará su IP con la que no queremos, y le expulsará si es igual. ¡Perro guardián en ASP! :-) |
Usa OLEDB en lugar de ODBC Cuando salió ASP e incluso hoy en día todo el mundo utiliza ODBC (con y sin DSN) para conectarse a una base de datos. Uno de los mayores motivos es que todos los ejemplos de código usan ODBC. Bien, aunque es correcto, OLEDB está aquí ya y es más rápido, más estable y lo más importante: funciona con prácticamente todo tu código anterior. Simplemente hay que cambiar la cadena de conexión. Si antes tenías: "DSN=nombredsn" ó "DBQ=C:\data\basedatos.mdb; DRIVER={Microsoft Access Driver (*.mdb)}" tienes que cambiarlo por: "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\data\database.mdb;" o en caso de usar SQL Server: "Provider=SQLOLEDB; Data Source=sql_server; Initial Catalog=sql_database; User Id=username; Password=password;" |
Caché de páginas ASP y proxys Por defecto los proxys no almacenan en caché los contenidos dinámicos de una página ASP. Esto está bien para una página que cambie habitualmente, pero para páginas que no cambien apenas o scripts que sean "librerías", permitir que se almacenen en caché incrementará la velocidad para usuarios que naveguen a través de un proxy. Para hacer que una ASP sea cacheada, pon la siguiente línea al principio del script: <%Response.CacheControl = Public %> Notarán la diferencia. |
Como utilizar el CreateObject o <OBJECT> Aunque quizá no lo hayáis visto nunca, hay dos formas de crear un objeto de un componente de servidor. Una es la que hemos usado el 99.9% de la veces: set oRS=Server.CreateObject("ADODB.Recordset") Y la otra es escribiendo (fuera del código ASP) la marca HTML <OBJECT> con el atributo que indica dónde se ejecuta puesto a Server. De esta forma: <OBJECT RUNAT=Server ID=oRS ProgID="ADODB.Recordset"></OBJECT> ¿Hay alguna diferencia? Sí, la hay, y permite ahorrar algo de recursos del servidor con el segundo método. Cuando utilizamos el método Server.CreateObject, el servidor reserva el espacio, memoria, etc. que necesita el objeto en ese mismo momento. En cambio, utilizando la marca <OBJECT> el servidor reservará todo esto cuando SEA LLAMADO EL PRIMER MÉTODO O LA PRIMERA PROPIEDAD del objeto. Piensa en el típico script que abre una conexión a bd y al final, después de verificar los datos, no la utiliza y la cierra sin más. Utilizando la segunda forma, no habríamos gastado ni un solo byte de memoria. Por cierto, si utilizáis la segunda forma, NO TENES que usar al final oRS.Close, simplemente poned set ORS=nothing. Peculiaridades de <OBJECT>. |
Como realizo una conexion a base de datos ?? |
Como Utilizar el componente AspEmail ? ¿Qué es AspEmail? AspEmail es un componente realizado por la empresa Persits Software Inc. que permite el envío de emails a través de las páginas web ASP. Soporta múltiples recipientes, CC, BCC, archivos adjuntos, formato html, imágenes, entre otros. Requerimientos Para hacerlo funcionar se necesita instalar sobre plataforma Windows (95/98/Nt/2000) y contar con un servidor SMTP para el envío de los emails. También hay requerimientos específicos como: Internet Information Server 3.0, 4.0 o 5.0 y Active Server Pages, o Personal Web Server en cualquier versión, o hasta Visual Basic, Visual C++, o cualquier otro paquete con soporte de componentes COM. Instalación Para bajar el componente debemos dirigirnos a www.aspemail.com/download.html y descargamos la versión que se ajuste a nuestras necesidades. Al ejecutar el archivo Aspemail.exe se iniciará el programa de instalación del mismo, en donde entre otras cosas elegimos el directorio en donde instalar el componente, en nuestro caso elegimos c:\AspEmail. Una vez instalada se habrá copiado a nuestro sistema la librería correspondiente. Para registrarla solo ejecuta lo siguiente en el DOS o en Ejecutar del menú Inicio: c:\regsvr32 c:\AspEmail\Bin\AspEmail.dll Junto a AspEmail viene incluida una versión de evaluación del componente AspUpload, el cual permite subir archivos hacia el servidor. Para registrar el AspUpload ejecuta de la misma forma que el anterior: c:\regsvr32 c:\AspEmail\Bin\AspUpload.dll AspUpload no necesita que esté registrado el AspEmail. Usando AspEmail Como en todos los componentes que forman parte de una página Asp es necesario crear el objeto que se va a utilizar: <% ... Set Mail = Server.CreateObject("Persits.MailSender") ... %> Luego se crea la instancia del objeto: Para enviar emails desde las páginas ASP se debe especificar el servidor SMTP a utilizar: Mail.Host = "smtp.tuservidor.com" Mail.Port = 25 ' Opcional: El puerto predeterminado es 25 Luego se debe especificar las direcciones de envío y en forma opcional, el nombre: Mail.AddAddress "[email protected]", "WebExperto" Mail.AddCC "[email protected]", "Fabian Muller" ' El campo CC, Bcc, son opcionales Se usan las propiedades Subject y Body para especificar el Asunto y Cuerpo del mensaje, respectivamente. El cuerpo puede ser en modo texto o modo html, en este caso se declara la propiedad IsHTML con el valor True. Mail.Subject "Consulta desde la pagina" Mail.Body "Aquí iría el cuerpo del mensaje, el cual llegara a los recipientes antes mencionados" O en formato Html: Mail.Subject "Consulta desde la pagina" Mail.Body "<html><body>Se pueden especificar las etiquetas html, como por ejemplo texto en <b>negrita</b> o <i>cursiva</i> y hasta tablas.</body></html>" Mail.IsHTML = True Para enviar un archivo adjunto se utiliza el método AddAttachement. Se debe especificar la ruta completa del archivo a adjuntar: Mail.AddAttachement "c:\directorio\archivo.ext" Y por último hay que enviar el mensaje, con el método Send. Se puede especificar, que en caso de producirse un error, continúe el programa y muestre el error: On Error Resume Next Mail.Send If Err <> 0 Then Response.Write "Ha ocurrido el siguiente error: " &Err.Description End If Ejemplo de envío de email a partir de un formulario Un ejemplo del uso que se le puede dar al AspEmail es el de envío de formularios. En el siguiente ejemplo veremos un formulario y en archivo sendmail.asp que procesará el formulario y enviará el email correspondiente: <form method="POST" action="sendmail.asp"> <p>De:<br> <input type="text" name="de" size="20"></p> <p>Para:<br> <input type="text" name="para" size="20"></p> <p>Asunto:<br> <input type="text" name="asunto" size="20"></p> <p>Mensaje:<br> <textarea rows="2" name="mensaje" cols="20"></textarea></p> <p><input type="submit" value="Enviar" name="enviar"></p> </form> Sendmail.asp <% 'Recogemos los datos del formulario de = Request.Form("de") para = Request.Form("para") mensaje = Request.Form("mensaje") asunto = Request.Form("asunto") Set Mail = Server.CreateObject("Persits.MailSender") Mail.Host = "mail.tusitio.com" Mail.From = de Mail.AddAddress para Mail.Subject = asunto 'El mensaje en formato html Mail.IsHTML = True Mail.Body = "<HTML><BODY><p><font face=verdana size=2>De: "&de&"<br>Mensaje: "&mensaje&"<br><br></p><br>Enviado el "& Now() &"</font></BODY></HTML>" On Error Resume Next Mail.Send If Err <> 0 Then Response.Write "Ha ocurrido el siguiente error: " &Err.Description End If %> Próximamente Más adelante, escribiremos artículos sobre como enviar archivos adjuntos, utilizar con bases de datos, y también veremos el componente AspUpload. |
El enlace de la FAQ 9 no funciona |
Foro en Castellano ...y un buen foro en castellano conoces? |
...y un buen foro en castellano conoceis? |
UTILIZANDO JAVA EN LAS PAGINAS ASP P: ¿COMO PUEDO UTILIZA JAVA EN MIS PAGINAS ASP? R:/ En primer lugar deberás crear y compilar la clase. Para ello utiliza tu editor de textos habitual. Para compilar la clase deberás tener instalado el JDK de Sun. Crea el archivo "testJava.java". Deberás tener en cuenta que los métodos que quieres que sean accesibles desde la página ASP deben ser públicos. public class javaTest { public String bienvenida() { return "Bienvenido al ejemplo de ASP y Java"; } } A continuación deberás compilarlo, por ejemplo, mediante el programa "javac" del JDK. Ejecútalo desde línea de comandos mediante la siguiente sentencia: c:\jdk1.2.2\bin> javac javaTest.java Como resultado, de esta acción tendrás la clase compilada en un archivo "testJava.class" Instalar la clase Para instalar la clase y hacerla accesible desde tu página ASP, deberás copiarla en el directorio de clases de tu ordenador (denominado habitualmente CLASSPATH). En sistemas windows 95/98 este directorio se encuentra en la siguiente ruta: "c:\windows\java\classes\" Para conocer la ruta del classpath en tu sistema puedes acceder al registro de windows y buscar la cadena de texto "classpath". Recuerda que puedes abrir citado registro mediante la opción ejecutar del menú Inicio e introduciendo el texto "regedit". Una vez estes en el editor del registro pulsa F3 para visualizar la ventana de búsqueda. Crear la página ASP Para finalizar el proceso tan solo falta crear la página ASP que utilizará la clase Java creada anteriormente. Se utilizará la función de VBScript denominada GetObject y se llamará a los métodos que la clase tenga implementados. <html> <head> <title>Ejemplo de ejecución de código java desde ASP</title> </head> <body> <% Dim javaTestObj set javaTestObj = GetObject("java:javaTest") %> Este texto lo escribe el método bienvenida de la clase javaTest:<br> <% response.write javaTestObj.bienvenida() %> <% set javaTestObj = nothing %> |
Usando ASPLOAD P:¿Cómo usar AspUpload? R:/ Ejemplo explicativo: Para usar AspUpload, precisa de un archivo HTML conteniendo un formulario y de un script ASP que se encarga de gestionar el anterior. El código siguiente correspondería a un archivo HTML con el formulario para la subida de dos archivos al servidor: <HTML> <BODY BGCOLOR="#FFFFFF"> <FORM METHOD="POST" ENCTYPE="multipart/form-data" ACTION="Upload.asp"> <INPUT TYPE=FILE SIZE=60 NAME="FILE1"><BR> <INPUT TYPE=FILE SIZE=60 NAME="FILE2"><BR> <INPUT TYPE=FILE SIZE=60 NAME="FILE3"><BR> <INPUT TYPE=SUBMIT VALUE="Upload!"> </FORM> </BODY> </HTML> Tenga en cuenta que precisa especificar el atributo ENCTYPE="multipart/form-data" , dado que indica que se envíe el contenido del archivo y no sólo el nombre. Si no lo hace así, no le funcionará el upload de ficheros. Veamos ahora cómo sería el script asociado Upload.asp: <HTML> <BODY> <% Set Upload = Server.CreateObject("Persits.Upload.1") Count= Upload.Save("d:\xvrt\midominio.com\html\upload") %> <% = Count %> ficheros subidos. </BODY> </HTML> La primera línea del script crea la instancia del objeto. Luego se llama al método Save, que es el que realmente realiza el trabajo de upload. El método devuelve el número de ficheros subidos con éxito. En caso de error, devuelve una excepción. Algunas características especiales Esta versión del componente, ofrece algunas mejoras frente a sus predecesoras: Soporte completo para ADO. Le permite usar estos objetos para insertar/extraer ficheros en bases de datos. Paso automático de Mac a PC. Se detecta si la subida del archivo se hace desde un Mac y realiza una conversión. Extracción del tamaño de imágenes. Determina el tamaño de imágenes JPEG, BMP y gif. Nuevas propiedades y métodos como File.SaveAs o Upload.OpenFile |
Sacar una serie de n números aleatorios, distintos entre sí dentro de un rango de valores. Primero, las funciones a utilizar, que son tres: Código: '####################Código: Dim arreglo()Código: i = 0 |
P: ¿Como puedo mostrar una lista de usuarios y que al hacer click en uno me muestre todos sus datos? R: Primero necesitaremos una pagina asp donde saquemos todos los usuarios de una tabla de la BD. <% Set Conexion=Createobject("ADODB.Connection") Conexion.Open "PROVIDER=MICROSOFT.JET.OLEDB.4.0;Jet OLEDB:Database Password='pass';DATA SOURCE=" & server.mappath("base.mdb") & ";" sql="Select * from usuarios" set rsusuarios=conexion.execute(sql) do while not rsusuarios.eof %> <p align="left"> <font face=Verdana size=3 color="#009900"><a href=datos.asp?Nick=<% response.write(rsusuarios.Fields("nick")) %>><%response.write(rsusuarios("Nick"))%></a></font><br> <% rsusuarios.movenext loop %> Esto nos mostraria uno a uno todos los nicks de todos los usuarios y al hacer click nos llevara a datos.asp en la que tenemos que tener: <% Set Conexion=Createobject("ADODB.Connection") Conexion.Open "PROVIDER=MICROSOFT.JET.OLEDB.4.0;Jet OLEDB:Database Password='pass';DATA SOURCE=" & server.mappath("base.mdb") & ";" ordensql="Select * from Datos_Usuarios where Nick='" & request.querystring ("Nick") & "'" set rsusuarios=conexion.execute(ordensql) %> <p>Nick: <% response.write(rsusuarios.fields(0)) %></p> <p>Nombre: <% response.write(rsusuarios.fields(1)) %></p> <p>Apellidos: <% response.write(rsusuarios.fields(2)) %></p> <p>Edad: <% response.write(rsusuarios.fields(3)) %></p> <p>Email: <% response.write(rsusuarios.fields(4)) %></p> <p>Ubicación: <% response.write(rsusuarios.fields(5)) %></p> Y asi nos mostraria los datos sencillamente, luego kada kual puede darse su toke pa ke kede bonito porke esto asi es una mierdecilla jeje. Espero que os sirva de ayuda |
scramble, shuffle o reordenar un string a lo mejor a alguien le es util esto. <% function scramble(valor) Randomize textonuevo=len(valor) do until textonuevo=0 r=Int((textonuevo - 1 + 1) * Rnd + 1) nvalor=nvalor&Mid(valor,r,1)&"," valor=replace(valor,Mid(valor,r,1),"",1,1) textonuevo=textonuevo-1 loop scramble=nvalor end function %> <%=scramble("aquivacualquiertextoquequierasreorden ar")%> saludos :arriba: |
Validacion Avanzada de E-mail Código PHP: Código PHP: |
Includes condicionados <% select case request("id") case 1 %> <!--#include file="includes/email_insertar.inc" --> <% case n %> <!--#include file="includes/email_insertar.inc" --> <% end select %> |
Error al usar BookMarks Como solucionar el error: "Current Recordset does not support bookmarks. This may be a limitation of the provider or of the selected cursortype" Definir el recordset con: CursorLocation = adUseClient Gracias a unholy. :arriba: |
paso de parámetros a un reporte en Crystal ValerioJ en un post compartió esto: Cómo pasar parámetros a un archivo.rpt es así: http://localhost/reportes/mireporte...54&PROMPT2=2004 empieza desde 0 1 2 3 n parámetros. Espero les sirva de algo. Gracias a ValerioJ Venezuela. |
Solución a Server Application Error Cuando al momento de ejecutar páginas ASP el IIS solo lanza el error antes mencionado nos podemos enfrascar en eternas reinstalciones del IIS. Para solucionar esto es necesario irse al IIS en Herramientas Administrativas, seleccionar el sitio Web predeterminado -> propiedades -> Directorio Particular -> Protección de aplicación y seleccionar "Baja" (proceso IIS). |
Propiedades de un SWF con ASP hola a todos.... solo era para cooperar con el foro y compartir los conocimientos con los demas.... aqui les dejo una funcion interesante para conseguir las propiedades de un archivo en flash (.swf). lo unico malo es que funciona bien para las versiones menores a la 6. esto es cuando exportan el archivo desde el macromedia flash le colocan la opcion que diga version y alli colocan una menor a la 6. eso es lo unico malo que encontre del codigo, por lo demas esta excelente.... sacas el ancho, alto, version, framerate, etc. del swf.... aqui esta el codigo.... los tranfsforme a una funcion para mejor facilidad de uso. el mismo tiene un include .inc. ok swfheaderdump.inc Código: <%la funcion Código: function FlashDimension(path, archivo, tipo)si tienen uno mejor... bienvenido sea... estamos para compartir y aprender :arriba: saludos :adios: |
Encryptar y Desencryptar Password hola.... aqui hay un codigo encriptador.... funciona perfectamente.... espero les sirva :-) saludos Código: <% |
hola para todos los que le interesa la variante esa que dice urjose de otros sistema de usuario y contraseña con session y que el dice debajo que lo malo es que est'a en ingles aqui les envio la primera parte traducida al español. A menudo como Desarrollador WEB te encuentras en situaciones donde quieres proteger areas especificas de tu sitio de ser vista por todos. Un buena manera de hacerlo es agregando proteccion por password a tu Sitio. Lo primero que debes hacer es crear una página de logeo, la cual sería algo como esto: <% Sub ShowLogin %> <form name=form1 action=login.asp method=post> User Name : <input type=text name=username> Password : <input type=password name=userpwd> <input type=hidden name=login value=true> <input type=submit value="Login"> </form> <% End Sub %> El código anterior simplemente crea un formulario. La segunda caja de texto tiene el tipo password Type=Password, lo que hace que lo que el usuario que haya escrito aparesca como estrellas (como estas ******). También anotar que si quieres que la acción de l formulario sea la misma página. Entonces no necesitamos una segunda página para manipular el chequeo del password. Hablar'e del elemento Hidden en el formulario después. Tambié ver'a por que pusimos el formulario dentro de una sub rutina m'as adelante. Antes de introducir el codigo para chequear y ver si el usuario y el password son correctos necesitamos agregar algo de codigo en login.asp para chequear y ver si el formulario fue enviado. Response.Expires = -1000 'Makes the browser not cache this page Response.Buffer = True 'Buffers the content so our Response.Redirect will work Session("UserLoggedIn") = "" If Request.Form("login") = "true" Then CheckLogin Else ShowLogin End If Este codigo ira a revisar si en login.asp el formulario fue enviado. Si lo fue entonces podemos chequear el logeo, si no entonces mostramos el formulario de logeo. Luego agregaremos el codigo subrutina del chequeologeo para chequear y ver si el usuario y el password son correctos Sub CheckLogin If LCase(Request.Form("username")) = "guest" And LCase(Request.Form("userpwd")) = "guest" Then Session("UserLoggedIn") = "true" Response.Redirect "protectedpage.asp" Else Response.Write("Login Failed.<br><br>") ShowLogin End If End Sub el codigo anterior chequeara para asegurarse de que se ha entrado el login correctamente. para configurar la Variable de Sesion "UserLoggeddln" igual a "" estamos basicamente desconectando al usuario. Lo unico que nos falta por hacer es escribir el codigo a poner en la cabecera de la pagina protegida para chequear y ver si el usuario esta logeado. Response.Expires = -1000 'Hace que el explorador no cree cache de esta pagina Response.Buffer = True 'activa el buffer para el contenido asi nuestro Response.Redirect trabajara If Session("UserLoggedIn") <> "true" Then Response.Redirect("login.asp") End If Ejemplo de lo anteriormente expuesto. codigo para login.asp[Top] <% Response.Expires = -1000 'Makes the browser not cache this page Response.Buffer = True 'Buffers the content so our Response.Redirect will work Session("UserLoggedIn") = "" If Request.Form("login") = "true" Then CheckLogin Else ShowLogin End If Sub ShowLogin %> <form name=form1 action=login.asp method=post> User Name : <input type=text name=username><br> Password : <input type=password name=userpwd><br> <input type=hidden name=login value=true> <input type=submit value="Login"> </form> <% End Sub Sub CheckLogin If LCase(Request.Form("username")) = "guest" And LCase(Request.Form("userpwd")) = "guest" Then Session("UserLoggedIn") = "true" Response.Redirect "protectedpage.asp" Else Response.Write("Login Failed.<br><br>") ShowLogin End If End Sub %> protectedpage.asp <% Response.Expires = -1000 'Makes the browser not cache this page Response.Buffer = True 'Buffers the content so our Response.Redirect will work If Session("UserLoggedIn") <> "true" Then Response.Redirect("login.asp") End If %> This page is password protected. If you are reading this you entered <br> the correct name and password. Traducción: Choco_cu |
Ahora les envio la segunda parte del sistema de usuario y contraseña con session segunda parte En la Primera parte les mostramos como hacer una simple interface de proteccion por password funcional para tu Sitio. En est'a parte vamos a explorar como agregar mensajes de error, pertimir que los usuarios se relogeen o sea se reconecten, y solicitar a la base de datos por el nombre de usuario y el password entrado. La primera cosa que haremos es agregar el codigo para permitir a los usuarios volver a logearse. Para hacerlo necesitamos chequear y ver que el usuario se encuentra logeado y agregar una nueva subrutina para manipular eso. Primero agregamos el codigo para chequear y ver si el usuario se mantiene conectado. el siguiente codigo necesita se agregado en la cabecera de la pagina de logeo. Este codigo dirigir'a lo que pasa cuando el usuario activa la pagina de logeo. login = Request.Form("login") If login = "login_again" Then Session("UserLoggedIn") = "" ShowLogin Else If Session("UserLoggedIn") = "true" Then AlreadyLoggedIn Else If login = "true" Then CheckLogin Else ShowLogin End If End If End If Este codigo(anterior) reemplaza este codigo (de abajo) de la primera parte If Request.Form("login") = "true" Then CheckLogin Else ShowLogin End If Luego agregaremos la subrutina. AlredadyLoggedln para decirle al usuario que estan logeado y preguntar si quieren volverse a logear. <% Sub AlreadyLoggedIn %> You are already logged in. Do you want to logout or login as a different user? <form name=form2 action=login2.asp method=post> <input type=submit name=button1 value='Yes'> <input type=hidden name=login value='login_again'> </form> <% End Sub %> he incluido un script de asp de apertura y cierre para delimitar porque in esa seccion de codigo hay una mescla de ASP y Html. Ahora para agregar el chequeo de errores necesitamos declarar una variable global para el mensaje de error, agregar el codigo para formatear el mensaje de error e imprimir el mensaje si sse necesita. Declarar la Variable para almacenar el mensaje de error cerca de la cabecera de la pagina de logeo. Dim Error_Msg Y agregamos este pequeño pedazo de codigo al inicio del formulario de logeo. Esto imprimira un mensaje de error si hay alguno. Response.Write(Error_Msg&"<br>") Ahora todo lo que nos falta por hacer es agregar el codigo para chequear el nombre de usuario y el password en una base de datos. Para hacerlo Reescribiremos la subrutina CheckLogin de la primera parte. Sub CheckLogin Dim Conn, cStr, sql, RS, username, userpwd username = Request.Form("username") userpwd = Request.Form("userpwd") Set Conn = Server.CreateObject("ADODB.Connection") cStr = "DRIVER={Microsoft Access Driver (*.mdb)};" cStr = cStr & "DBQ=" & Server.MapPath("\articles\asp\advanced\passwordhow to.mdb") & ";" Conn.Open(cStr) sql = "select username from UserTable where username = '" & LCase(username) & "'" sql = sql & " and userpwd = '" & LCase(userpwd) & "'" Set RS = Conn.Execute(sql) If RS.BOF And RS.EOF Then Error_Msg = "Login Failed. Try Again." ShowLogin Else Session("UserLoggedIn") = "true" Response.Redirect "protectedpage2.asp" End If End Sub ya esta hecho, puedes cortar y pegar el formulario del codigo de abajo y entonces acomodarlo a tu sitio nueva variante del sistema login2.asp [Top] <% Response.Expires = -1000 'Evita que el explorador haga una cache del sitio Response.Buffer = True 'activara el buffer para el contenido asi nuestro Response.Redirect trabajara Dim Error_Msg login = Request.Form("login") If login = "login_again" Then Session("UserLoggedIn") = "" ShowLogin Else If Session("UserLoggedIn") = "true" Then AlreadyLoggedIn Else If login = "true" Then CheckLogin Else ShowLogin End If End If End If Sub ShowLogin Response.Write(Error_Msg & "<br>") %> <form name=form1 action=login2.asp method=post> User Name : <input type=text name=username><br> Password : <input type=password name=userpwd><br> <input type=hidden name=login value=true> <input type=submit value="Login"> </form> <% End Sub Sub AlreadyLoggedIn %> Ya estas logeado. deseas logearte como un usuario nuevo? <form name=form2 action=login2.asp method=post> <input type=submit name=button1 value='Yes'> <input type=hidden name=login value='login_again'> </form> <% End Sub Sub CheckLogin Dim Conn, cStr, sql, RS, username, userpwd username = Request.Form("username") userpwd = Request.Form("userpwd") Set Conn = Server.CreateObject("ADODB.Connection") cStr = "DRIVER={Microsoft Access Driver (*.mdb)};" cStr = cStr & "DBQ=" & Server.MapPath("\home\codelib\howto\aspadvanced\pa sswordhowto.mdb") & ";" Conn.Open(cStr) sql = "select username from UserTable where username = '" & LCase(username) & "'" sql = sql & " and userpwd = '" & LCase(userpwd) & "'" Set RS = Conn.Execute(sql) If RS.BOF And RS.EOF Then Error_Msg = "Login Failed. Try Again." ShowLogin Else Session("UserLoggedIn") = "true" Response.Redirect "protectedpage2.asp" End If End Sub %> protectedpage2.asp[Top] <% Response.Expires = -1000 'Makes the browser not cache this page Response.Buffer = True 'Buffers the content so our Response.Redirect will work If Session("UserLoggedIn") <> "true" Then Response.Redirect("login2.asp") End If %> Esta es una pagina protegida por password. si estas leyendo esto has entrado<br> el nombre y el password correctos. |
RecordCount para MySql no se si ya exista una respuesta para esto, pero para los que no les funciona el RecordCount en MySql aqui hay una opción: <% Function RecCount(rsdef) intRows = rsdef.GetRows rsdef.MoveFirst RecCount = UBound(intRows,2) + 1 End Function . . . Tu Conexión . . response.write = RecCount(RS) %> A ver si se consiguen algo igual para el AbsolutePage :si: |
Actualizar una Base de Datos Dependiendo de un ID Cómo actualizar algunos campos ( o todos ) de una Base de Datos, dependiendo de un Valor Tomado de una Página Anterior. Cita:
IDAnterior= Valor tomado de una página Anterior Recuerda, sí Recoges un Valor desde una URL, lo tomas de la siguiente forma: Request.QueryString("valor") Recuerda, sí Recoges un Valor desde un Formulario, lo tomas de la siguiente forma: Request.Form("valor") Saludos |
FORMATO DE FECHAS SENCILLO PERO "AGRADABLE" <%= formatdatetime((now),vblongdate) %> Te Desplegara una Fecha tipo: Lunes, 22 de Enero del 2004 Saludos |
Administrador de Base de Datos OnLine en ASP con esto, podras manejar o controlar tu base de datos desde internet. Podrás compactarla, crear tablas, campos, modificar valores, hacer querys de sql, etc. disfrutenla DBAdmin Link |
Agilizando la carga de tus páginas ASP II 10 tips para optimizar ADO 1.- Evitar Actualizaciones a traves de RecordSets. Debido a que el propósito del RecordSet es brindar consultas más rápidas a través de la opción de RecordSet Desconectados, minimizando las conexiones. 2.- Utilizar Stored Procedures. Es mejor debido a que ya se encuentra compilado en el Server y además de tener mayor prioridad, tiene más fácil mantenimiento y seguridad 3.- Crear el Minimo RecordSet. En otras palabras, seleccionar segun el tipo de operacion que se va realizar el tipo de recordset (Cursor Type o Cursor Location)a abrir 4.- Usar RecordSets Desconectados. Logicamente para economizar conexiones y para presentar consultas mas rapidas. 5.- Define Comandos Parametrizados. Segun lo que entendi es que al definirlos de esta forma lo que se envia al servidor es una colecciones de Parametros que optimiza la ejecución de Stored Procedure. 6.- Encapsula El Aceso a la Data. Obviamente se refiere a trabajar con componentes. 7.- Use el Data Shaping para retornar datos de Cabecera y detalle. Debido a que significa menos trafico de red y menor consumo de recursos para el cliente. 8.- Use el MTS 9.- Use Parametros de Salida. Cuando un stored devuelve un valor o un RecordSet se recomienda devolverlo como parametro de salida debido a que se evita el crear un nuevo objeto. 10.- Obtenga solo la data que se requiere. Solo debemos extraer las columnas o filas, osea no debemos tomar toda la tabla sino los valores necesarios. (***hasta aquí sacado de http://www.telecable.es/personales/j...n/res00456.htm sacado a su vez de Visual Basic Programmer Journal) Unas cuantas cosas más: -Liberar recordsets y conexiones en cuanto se pueda, no al final del script, como se dice por ahí. -Evidentemente, y si es posible, usar SQLServer o Mysql u otra base de datos "de verdad". evitar access, que no está preparado para muchas conexiones concurrentes. -No usar el mismo nombre de objeto para distintos queries en el mismo script. SQLServer crea un procedimiento almacenado temporal por cada petición y puede ser que el usar el mismo nombre de objeto se provoque una caída del sistema. Sobre todo trabajando con procedimientos almacenados parametrizados. -Usar recordsets forward-only,read-only siempre que sea posible. -Huye como del diablo de las sentencias tipo "SELECT * FROM TABLA", especifica siempre los nombres de los campos. -Usa providers OLEDB nativos siempre que sea posible.No uses providers OLEDB para fuentes ODBC. -Procura que las cadenas de conexión a la base de datos (si es que tienes más de una) sean EXACTAMENTE iguales, ya que ADO hace una comparación carácter a carácter de las conexiones para colocarlas o recharzarlas en la pila de peticiones. La mejor manera de evitar ésto es poner la conexión en un include o en una variable Application en Global.asa -No guardes objetos connection o recordset en variables Session o Application. Hacer ésto machaca mucho la escalabilidad de la aplicación, porque las peticiones a la conexión o al recordset son ejecutadas en serie y, así, una página ASP debería esperar hasta que ninguna otra esté usando el recurso para poderlo utilizar. Es infinitamente mejor crear la conexion y el recordset en cada página y destruirlos antes de que el script termine. -Usa conexiones sin DSN. -Cuando uses providers nativos OLEDB, No uses ficheros de conexión UDL. -Poner los tags <%%> en la misma línea reduce la sobrecarga de la página, ya que el motor ASP no tiene que interpretar los saltos de línea (las líneas las lee carácter a carácter) -todos conocemos las bondades de los comentarios, pero mejor no abusar de ellos por la misma razón que la anterior. BUENO, YA VALE POR HOY. UN SALUDO A TODOS :adios: (**fuente:Visual Basic Programmer Journal) |
Q: ¿Cómo puedo saber si estoy en un servidor seguro? R: Así: Código: <%if request.ServerVariables("SERVER_PORT_SECURE")=0 then%> |
Strings de Conexión P: ¿Cómo me conecto desde ASP con MySQL, ACCESS, SQL, DBF, etc? R: http://www.connectionstrings.com |
Sistema de Acceso con Clave ASP+Access P.: ¿Cómo implementar un sistema de acceso con clave seguro y vistoso? Y que además registre cuándo entran los usuarios, su IP, cómo localizar dónde se ubica la IP, mostrar un mensaje personalizado de bienvenida para el usuario, registrando accesos maliciosos o erróneos, y además felicitar al usuario si es su cumpleaños... todo esto y mucho más en .... :borracho: R: Utiliza una base de datos con tres tablas, una para guardar los accesos "buenos" otra para los "malos" (intentos o errores de los usuarios) y otra para ir poniendo los usuarios. (Descripción de la base de datos en notas, al final). Además, incluye la función "zorionak" (Felicidades en euskera) para lanzar un pop-up si es el cumpleaños del usuario. ("urtebete" [cumpleaños] es el campo de la tabla usuarios donde va la fecha dd/mm sin año, claro), usando una cadena u otra "zorion" ó "nozorion". Esto es muy vistoso y agradecido por los usuarios. :si: (Seguir el verde oscuro para este asunto) Combina todo esto con www.ip2location.com/free.asp que permite ver la localización (90% exacto) de la IP, y tendrás una página de acceso muy guay y bien controlada. :policia: (restringido a 20 consultas por día por IP) [acceso.asp]: <%if request.form("usuario")="" then response.redirect "entrada.htm" %> <%else 'eliminamos las posibles comillas de la entrada 'para evitar la introducción de sentencias SQL usuario=replace(request.form("usuario"),"'","") password=replace(request.form("password"),"'","") com=chr(34) Var_IP = Request.ServerVariables("HTTP_X_FORWARDED_FOR") if Var_IP = "" then Var_IP = Request.ServerVariables("REMOTE_ADDR") end if Var_IP2 = Request.ServerVariables("REMOTE_HOST") IF Var_IP2 = "" then Var_IP2 = Request.ServerVariables("REMOTE_ADDR") end if zorion="<script language=JavaScript>function zorionak(){window.open('zorionak.htm','','top=100, left=100,width=415,height=294,scrollbars=No,locati on=No,menubar=No,resizable=no,status=No,directorie s=No,toolbar=No,copyhistory=No')}</script><body onload='zorionak()' bgcolor='#CCFFFF'>" nozorion="<body bgcolor='#CCFFFF'>" Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../data/TABLA.mdb")) set rs = CreateObject("ADODB.Recordset") sqltxt="Select * from usuarios where usuario='"&usuario&"' and password= '"&password&"'" 'response.write sqltxt rs.Open sqltxt, conn if not rs.eof then ' nos ha devuelto un registro, ahora miraremos si es valido ' con ello evitamos el ataque típico SQL if rs("usuario")=usuario and rs("password")=password then ' si el usuario esta en la base de datos y la password coincide session("autorizacion")=1 Insertar = "INSERT INTO TablaAccesos (ID_Usuario, Fecha_Acceso, IP, IP2) VALUES ('"&usuario&"', '"&Now()&"', '"&Var_IP&"', '"&Var_IP2&"')" Conn.Execute(Insertar) IF RS("URTEBETE")=date() then Response.write "<html>..<head>" & zorion & "<table ...>Bienvenido: " & rs("nombre") & "</font>...</html>" else Response.write "<html>..<head>" & nozorion & "<table ...>Bienvenido: " & rs("nombre") & "</font>...</html>" end if end if else Insertar = "INSERT INTO BadAccesos (Bad_usuario, Bad_fecha, Bad_clave, Bad_IP, Bad_IP2) VALUES ('"&usuario&"', '"&Now()&"', '"&password&"', '"&Var_IP&"', '"&Var_IP2&"')" Conn.Execute(Insertar) session("autorizacion")=-1 end if rs.close set rs=nothing conn.close set conn=nothing if session("autorizacion")=-1 or session("autorizacion")="" then ' no hemos encontrado el registro ' eso indica que el usuario y/o la password son erroneos response.redirect "entrada.htm" end if end if%> [entrada.htm]: <html> ... <form method="POST" action="acceso.asp"> ... <input type="text" name="usuario" size="20"></td> ... <input type="password" name="password" size="20"> ... <input type="submit" value="Aceptar" name="B1"> ... </form> ... </html> [BASE DE DATOS]: TABLA.mdb ---->usuarios (tabla) [Aquí es donde vas poniendo los usuario a mano] -------->usuario (campo) -------->password (campo) -------->nombre (campo) ---->TablaAccesos (tabla) -------->ID_Usuario (campo) -------->Fecha_Acceso (campo) -------->IP (campo) ---->BadAccesos (tabla) -------->Bad_usuario (campo) -------->Bad_fecha (campo) -------->Bad_clave (campo) -------->Bad_IP (campo) Yo guardo una copia de esta base de datos en el disco duro, donde voy copiando los accesos y badaccesos y dejo la "original" vacía y la vuelvo a subir, para evitar que se vaya "inflando" y ralentice el asunto. Para ello, también es aconsejable, antes de guardar, en access: Herramientas -> Utilidades de la Base de Datos -> Compactar y Reparar Base de datos. Esto evita que access guarde información "fantasma" y reajusta el tamaño al mínimo justo y necesario. [A TENER EN CUENTA]: El response.write genera el código de la página restringida. Ten en cuenta que dentro de ese código no puedes usar comillas dobles ["], pero sí simple ['] y también el código ASCII de la comilla, que es chr(34) y lo tienes que poner así: Response.write "...código html hasta la comilla" & chr(34) & "código html después de la comilla..." Verás que yo lo he definido como "com", para abreviar, y poner sólo " & com & " Además, recuerdo que en el response.write no se pueden hacer saltos de línea, hay que poner el código todo seguido. [zorionak.htm]: una paginita con algo vistoso, hombre, no seas rancio ;-) , pero ten en cuenta los tamaños y posición con que se abre, que los marco en la variable "zorion", y pon los que te vengan bien a tí. p.s.: ¿esto es una FAQ o un manual? :borracho: |
| La zona horaria es GMT -6. Ahora son las 13:16. |
Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.