Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   ASP Clásico (http://www.forosdelweb.com/f15/)
-   -   FAQ's del foro de ASP (http://www.forosdelweb.com/f15/faqs-del-foro-asp-89836/)

lubetpic 28/02/2003 17:02

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
%>

MrLake 10/03/2003 12:04

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

rashid 10/03/2003 17:12

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:

tarlipes 11/03/2003 11:55

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...

deprabado 16/03/2003 17:25

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.

deprabado 18/03/2003 11:53

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

Helbira 20/03/2003 02:27

Acentos con SERVERXMLHTTP
 
P: ¿Cómo mostrar los acentos cuando se utiliza XMLHTTP?

R:

Código PHP:

   dim HTTP
   set HTTP
=Server.CreateObject("Microsoft.XMLHTTP")
   
HTTP.open "GET"Url False
   HTTP
.setRequestHeader "Accept-Language""sp"
   
HTTP.setRequestHeader "Pragma""no-cache"
   
HTTP.setRequestHeader "Content-Type""application/x-www-form-urlencoded"
   
HTTP.Send 

Un beso ;-)

Helbira 25/03/2003 13:24

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:

Function timeStamp2Date(timestamp)
    
Dim dias
    Dim fecha
    Dim resto
   
    dias 
timestamp  86400
    fecha 
DateSerial(19701dias 1)
    
resto timestamp Mod 86400
    
    fecha 
DateAdd("s"restofecha)
    
    
timeStamp2Date=fecha
End 
Function 

Un beso ;-)

Helbira 25/03/2003 13:26

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:

Function date2TimeStamp(datFecha)
    
Dim dias
    Dim segundos

    segundos 
Second(datFecha) + Minute(datFecha) * 60 Hour(datFecha) * 3600
    dias 
DateDiff("d""01/01/1970"datFecha)
    
segundos segundos dias 86400
    
    Hay que quitarle dos horas
....
    
date2TimeStamp segundos 7200
End 
Function 

Un beso ;-)

BatusaiX 26/03/2003 18:42

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

maestro 25/04/2003 19:03

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

maestro 19/05/2003 07:02

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

tarlipes 21/05/2003 10:43

ERRORES SQL
 
aca los encuentran:

http://www.forosdelweb.com/showthrea...hreadid=127085

:adios:

maestro 13/06/2003 11:21

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
%>

maiden 11/07/2003 14:44

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

epa2 09/09/2003 09:56

¿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:

<%
Public Const ForReading = 1 'Abrir un archivo como sólo lectura. No se puede escribir en este archivo.
Public Const ForWriting = 2 'Abrir un archivo para escribir. Si existe un archivo con el mismo nombre, se sobrescribe el contenido anterior.
Public Const ForAppending= 8 'Abrir un archivo y escribir al final del mismo.

Public Const TristateUseDefault = 2 'Abrir el archivo utilizando el valor predeterminado del sistema.
Public Const TristateTrue = 1 'Abrir el archivo como Unicode.
Public Const TristateFalse = 0 'Abrir el archivo como ASCII.

Public Const adTypeBinary = 1 'Indica datos binarios.
Public Const adTypeText = 2 'Valor predeterminado. Indica datos de texto, en el juego de caracteres especificado en Charset.

Public Const MIME_ZIP = "application/x-zip-compressed"

'aPath: Camino al archivo
'save: Nombre del archivo que sera guardado
'mime: Tipo MIME del archivo
Public Sub sendFile(aPath, save, mime)
        Dim fs,f, ts, dat(512), aFile, o
        aFile=Server.Mappath(aPath)
        Response.Clear
        Response.ContentType = MIME_ZIP
        Response.Buffer = True
        set o = Server.CreateObject("ADODB.Stream")
        o.Type = adTypeBinary
        o.Open
        o.LoadFromFile(aFile)
        Response.AddHeader "content-disposition", "attachment;filename=" & save
        Response.BinaryWrite o.Read
        o.Close
        Set o = Nothing
        Response.End
End Sub
%>

y luego, por último en la página donde entra los usuarios para bajarse el archivo poneis lo siguiente...

ejemplo de donwload.asp


Código:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="CP_ACP"%>
<%Option Explicit%>

<!-- #include file="file.inc" -->


<%
        'AKI, EL PRIMER PARAMETRO ES LA RUTA DEL ARCHIVO ZIP Y EL SEGUNDO PARAMETRO EL NOMBRE
        'QUE LE QUERAMOS PONER AL ARCHIVO ZIP QUE SE LEERÁ CUANDO SE DESCARGUE.

        sendFile "../../descargas/Demo.zip", "Mi_mejor_demo.zip", MIME_ZIP
       
%>

Bueno, ya me contareis algún día si os sirve de algo.

Un salu2 :adios:

ACHAVARRIA 06/11/2003 11:56

.- 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
%>

ACHAVARRIA 06/11/2003 11:57

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".

ACHAVARRIA 07/11/2003 08:05

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
%>

ACHAVARRIA 07/11/2003 08:15

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! :-)

ACHAVARRIA 07/11/2003 08:20

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;"

ACHAVARRIA 07/11/2003 08:23

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.

ACHAVARRIA 07/11/2003 08:32

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>.

ACHAVARRIA 07/11/2003 13:25

Como realizo una conexion a base de datos ??
 
CONEXIONES DISPONIBLES EN :


http://www.connectionstrings.com/

ACHAVARRIA 07/11/2003 13:31

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.

webcam 11/11/2003 05:41

El enlace de la FAQ 9 no funciona

yanezes 04/12/2003 11:51

Foro en Castellano
 
...y un buen foro en castellano conoces?

yanezes 04/12/2003 11:52

...y un buen foro en castellano conoceis?

ACHAVARRIA 11/12/2003 16:00

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 %>

ACHAVARRIA 12/12/2003 16:20

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

meru-kun 20/03/2004 10:38

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:

'####################
'# Funciónes creadas por Isaí/Meruelo
'# Optimizadas por meruelo
'####################

Function RanNum(inicio, fin)
 Randomize()
  RanNum = Int((fin - inicio + 1) * Rnd + inicio)
End Function

Function chkRan(num, pos)
p = val_inicial
 Do while p <= val_final
  For d=0 To d=9
  If arreglo(d)=num then
    arreglo(pos) = RanNum(val_inicial, val_final)
      p = 1
  Else
    chkRan = num
      p = p + 1
  End if
  Next
 Loop
End Function

Function getArray(val_inicial, val_final)
indice_elem_actual=0
Do While indice_elem_actual<=numero_elementos
        numero=RanNum(val_inicial,val_final)
        For j=0 To (numero_elementos)
                If arreglo(j)=numero Then
                        numero=RanNum(val_inicial,val_final)
                        j=0
                End If
        Next
        arreglo(indice_elem_actual)=chkRan(numero, pos)
        indice_elem_actual=indice_elem_actual+1
Loop
End Function

Despues, simplemente, definir el arreglo
Código:

Dim arreglo()
Y, como ejemplo, crear un bucle para mostrar todos los números que saca

Código:

i = 0
  numero_elementos= 4
        Redim arreglo(numero_elementos)
              call getArray(1, numero_límite)
                  Do While i < numero_elementos
                              response.write arreglo(i)
                                  i = i + 1
                          Loop


malpika 01/04/2004 09:45

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

buliwyf 20/04/2004 20:04

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:

ElAprendiz 04/05/2004 07:55

Validacion Avanzada de E-mail


Código PHP:

<%
'Funcion que comprueba si un e-mail es valido. Devuelve:
-> si es nulo o esta vacio
' 1 -> Si el e-mail es incorrecto
-> Si el e-mail es valido

Function Validar_EMail(EMail)

Dim Con

If EMail "" Then
    Validar_EMail 
0
    
Exit Function
End If

EMail LCase(EMail)

If (
Left(EMail1) = "." Or Left(EMail1) = "@"Then
    Validar_EMail 
1
    
Exit Function
End If

If (
Right(EMail1) = "." Or Right(EMail1) = "_" Or _
    Right
(EMail1) = "@"Then
    Validar_EMail 
1
    
Exit Function
End If

Con 0

For 1 To Len(EMail)
    If (
Mid(EMaili1)) = "@" Then
       Con 
Con 1
    End 
If
Next

If Con Or Con 0 Then
    Validar_EMail 
1
    
Exit Function
End If

Con 0

For 1 To Len(EMail)
    If (
Mid(EMaili1)) = "@" Then
       
For i To Len(EMail)
          If (
Mid(EMailj1)) = "." Then
             Con 
Con 1
          End 
If
       
Next
    End 
If
Next

If Con 1 Then
    Validar_EMail 
1
    
Exit Function
End If

Con 0

For 1 To Len(EMail)
    If (
Mid(EMaili1) = ".") Or (Mid(EMaili1) = "@"Then
       
If (Mid(EMail11) = ".") Or (Mid(EMail11) = "@"Then
          Validar_EMail 
1
          
Exit Function
       
End If
    
End If
Next

For 1 To Len(EMail)
    If (
Mid(EMaili1) < "a" Or Mid(EMaili1) > "z") And _
       
(Mid(EMaili1) < "0" Or Mid(EMaili1) > "9") And _
       Mid
(EMaili1) <> "." And Mid(EMaili1) <> "_" And _
       Mid
(EMaili1) <> "@" Then
          Validar_EMail 
1
          
Exit Function
    
End If
Next

Validar_EMail 
2

End 
Function
%> 

formulario:

Código PHP:

<!-- #Include File="ValidarEmail.asp"-->
<%
if 
request.form("envio") = "envio" then
   
if Validar_EMail(Request.form("correo")) = 0 then response.write "Nulo o Vacio"
   
if Validar_EMail(Request.form("correo")) = 1 then response.write "Email inválido"
   
if Validar_EMail(Request.form("correo")) = 2 then response.write "Email válido"
end if
%>
<
BR>
<
FORM METHOD="post" ACTION="verificar.asp">
<
INPUT NAME="correo">
<
INPUT TYPE="Submit">
<
INPUT TYPE="Hidden" NAME="envio" VALUE="envio">
</
FORM


Myakire 21/05/2004 07:57

Includes condicionados
 
<%
select case request("id")
case 1
%>
<!--#include file="includes/email_insertar.inc" -->
<% case n %>
<!--#include file="includes/email_insertar.inc" -->
<%
end select
%>

Myakire 03/06/2004 08:05

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:

Myakire 22/06/2004 13:50

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.

Myakire 06/07/2004 09:17

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).

Saruman 13/08/2004 10:39

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:

<%
'-------------------------------------------------------------
'  Create Date : 17/10/2001 (dd/mm/yyyy)
'  Mod. Date  : 17/10/2001
'  Author      : Claudio Heidel ([email protected])
'-------------------------------------------------------------

Class SWFDump

  Private header
  Private RECTdata
  Private nBits
  Private mversion
  Private mfilelen
  Private mxMin
  Private mxMax
  Private myMin
  Private myMax
  Private mheigt
  Private mwidth
  Private mframerate
  Private mframecount

  Private Sub Class_Initialize()

  End Sub

  Private Sub Class_Terminate()

  End Sub


  Private Function ReadHeader (filename)
    Const ForReading = 1, ForWriting = 2, ForAppending = 8
    Dim fso, f
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set f = fso.OpenTextFile(filename, ForReading)
    ReadHeader = f.Read(21)
  End Function

  Private Function ToBin(inNumber, OutLenStr )
    Dim binary
    binary = ""
    do while inNumber >= 1
      binary = binary & inNumber mod 2
      inNumber = inNumber \ 2
    loop
    binary = binary & String(OutLenStr - len(binary), "0")
    ToBin = StrReverse(binary)
  End Function

  Private Function Bin2Decimal(inBin)
    Dim counter
    Dim temp
    Dim Value
    inBin = StrReverse(inBin)
    temp = 0
    For counter = 1 to Len(inBin)
      If counter = 1 then
        Value = 1
      Else
        Value = Value  * 2
      End If
      temp = temp + mid(inBin, counter ,1)  *  Value
    Next
    Bin2Decimal = temp
  End Function

  Public Function SWFDump(fileName)

    header = ReadHeader (fileName)
    mversion = asc(mid(header,4,1))
    mfilelen = asc(mid(header,5,1))
    mfilelen = mfilelen + asc(mid(header,6,1)) * 256
    mfilelen = mfilelen + asc(mid(header,7,1)) * 256 * 256
    mfilelen = mfilelen + asc(mid(header,8,1)) * 256 * 256 * 256

    RECTdata = ToBin(asc(mid(header,9,1)),8)
    RECTdata = RECTdata & ToBin(asc(mid(header,10,1)),8)
    RECTdata = RECTdata & ToBin(asc(mid(header,11,1)),8)
    RECTdata = RECTdata & ToBin(asc(mid(header,12,1)),8)
    RECTdata = RECTdata & ToBin(asc(mid(header,13,1)),8)
    RECTdata = RECTdata & ToBin(asc(mid(header,14,1)),8)
    RECTdata = RECTdata & ToBin(asc(mid(header,15,1)),8)
    RECTdata = RECTdata & ToBin(asc(mid(header,16,1)),8)
    RECTdata = RECTdata & ToBin(asc(mid(header,17,1)),8)

    nBits = Mid(RECTdata,1,5)
    nBits = Bin2Decimal(nBits)

    mxMin =  Bin2Decimal(Mid(RECTdata,6,nBits))
    mxMax =  Bin2Decimal(Mid(RECTdata,6 + nBits * 1 ,nBits))
    myMin =  Bin2Decimal(Mid(RECTdata,6 + nBits * 2 ,nBits))
    myMax =  Bin2Decimal(Mid(RECTdata,6 + nBits * 3 ,nBits))

    mheigt = round((myMax - myMin) / 20)
    mwidth = round((mxMax - mxMin) / 20)

    mframerate = asc(mid(header,18,1))

    mframecount = asc(mid(header,19,1))
    mframecount = mframecount + asc(mid(header,20,1)) * 256

  End Function


  Public Property Get Heigt()
    Heigt = mheigt
  End Property

  Public Property Get Width()
    Width = mwidth
  End Property

  Public Property Get Version()
    Version = mversion
  End Property

  Public Property Get FileLen()
    FileLen = mfilelen
  End Property

  Public Property Get xMin()
    xMin = mxMin
  End Property

  Public Property Get xMax()
    xMax = mxMax
  End Property

  Public Property Get yMin()
    yMin = myMin
  End Property

  Public Property Get yMax()
    yMax = myMax
  End Property

  Public Property Get Framerate()
    Framerate = mframerate
  End Property

  Public Property Get Framecount()
    Framecount = mframecount
  End Property
End Class
%>


la funcion


Código:

function FlashDimension(path, archivo, tipo)
                set myObj = new swfdump
                myObj.SWFDump (Server.MapPath(path & archivo))
               
                select case lcase(tipo)
                        case "w":
                                out = myObj.Width
                        case "h":
                                out = myObj.Heigt
                        case "version":
                                out = myObj.Version
                        case "fileLen":
                                out = myObj.FileLen
                        case "xmin":
                                out = myObj.xMin
                        case "xmax":
                                out = myObj.xMax
                        case "ymin":
                                out = myObj.yMin
                        case "ymax":
                                out = myObj.yMax
                        case "framerate":
                                out = myObj.FrameRate
                        case "framecount":
                                out = myObj.FrameCount
                        case else:
                                out = "Alto: " & myObj.Heigt & " pixeles<br>"
                                out = out & "Ancho: " & myObj.Width & " pixeles<br>"
                                out = out & "Version: " & myObj.Version & "<br>"
                                out = out & "Peso: " & myObj.FileLen & " bytes<br>"
                                out = out & "xMin: " & myObj.xMin & "<br>"
                                out = out & "xMax: " & myObj.xMax & "<br>"
                                out = out & "yMin: " & myObj.yMin & "<br>"
                                out = out & "yMax: " & myObj.yMax & "<br>"
                                out = out & "FrameRate: " & myObj.FrameRate  & "<br>"
                                out = out & "Total de Frames: " & myObj.FrameCount & "<br>"
                end select
       
        FlashDimension = out
       
        set myObj = nothing
end function

cualquier comentario solo avisen....
si tienen uno mejor... bienvenido sea... estamos para compartir y aprender :arriba:

saludos :adios:

Saruman 13/08/2004 10:42

Encryptar y Desencryptar Password
 
hola....
aqui hay un codigo encriptador....
funciona perfectamente.... espero les sirva :-)

saludos

Código:

<%
        Base64Chars =        "ABCDEFGHIJKLMNOPQRSTUVWXYZ" & _
                                "abcdefghijklmnopqrstuvwxyz" & _
                                "0123456789" & _
                                "+/"
                               
        Public Function EncodeStr(byVal strIn)
                Dim c1, c2, c3, w1, w2, w3, w4, n, strOut
                For n = 1 To Len(strIn) Step 3
                        c1 = Asc(Mid(strIn, n, 1))
                        c2 = Asc(Mid(strIn, n + 1, 1) + Chr(0))
                        c3 = Asc(Mid(strIn, n + 2, 1) + Chr(0))
                        w1 = Int(c1 / 4) : w2 = (c1 And 3) * 16 + Int(c2 / 16)
                        If Len(strIn) >= n + 1 Then
                                w3 = (c2 And 15) * 4 + Int(c3 / 64)
                        Else
                                w3 = -1
                        End If
                        If Len(strIn) >= n + 2 Then
                                w4 = c3 And 63
                        Else
                                w4 = -1
                        End If
                        strOut = strOut + mimeencode(w1) + mimeencode(w2) + _
                                          mimeencode(w3) + mimeencode(w4)
                Next
                EncodeStr = strOut
        End Function

        Private Function mimedecode(byVal strIn)
                If Len(strIn) = 0 Then
                        mimedecode = -1 : Exit Function
                Else
                        mimedecode = InStr(Base64Chars, strIn) - 1
                End If
        End Function

        Public Function DecodeStr(byVal strIn)
                Dim w1, w2, w3, w4, n, strOut
                For n = 1 To Len(strIn) Step 4
                        w1 = mimedecode(Mid(strIn, n, 1))
                        w2 = mimedecode(Mid(strIn, n + 1, 1))
                        w3 = mimedecode(Mid(strIn, n + 2, 1))
                        w4 = mimedecode(Mid(strIn, n + 3, 1))
                        If w2 >= 0 Then _
                                strOut = strOut + _
                                        Chr(((w1 * 4 + Int(w2 / 16)) And 255))
                        If w3 >= 0 Then _
                                strOut = strOut + _
                                        Chr(((w2 * 16 + Int(w3 / 4)) And 255))
                        If w4 >= 0 Then _
                                strOut = strOut + _
                                        Chr(((w3 * 64 + w4) And 255))
                Next
                DecodeStr = strOut
        End Function


        Private Function mimeencode(byVal intIn)
                If intIn >= 0 Then
                        mimeencode = Mid(Base64Chars, intIn + 1, 1)
                Else
                        mimeencode = ""
                End If
        End Function
       
       
        texto = "password"
        texto = EncodeStr(texto)
        response.Write(texto)
       
        response.Write("<br><br>")
       
        texto = "cGFzc3dvcmQ"
        texto = DecodeStr(texto)
        response.Write(texto)
%>


choco_cu 15/08/2004 12:36

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

choco_cu 15/08/2004 13:23

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.

Tarecito 20/08/2004 09:23

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:

Owen-Bonilla 22/09/2004 16:55

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:

<%language="vbscript"%>
<%
dim IDAnterior
dim usuario
dim password
dim nombre
dim apellidop
dim apellidom
dim imss
dim email

IDAnterior=Request.Form("id")
usuario=Request.Form("usuario")
password=Request.Form("password")
nombre=Request.Form("nombre")
apellidop=Request.Form("apellidop")
apellidom=Request.Form("apellidom")
imss=Request.Form("imss")
email=Request.Form("email")

set oConn=Server.CreateObject("ADODB.Connection")
oConn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../../db/usuarios.mdb") & "; Password=bonilla "
SQL="UPDATE usuarios SET usuario='"&usuario&"', password='"&password&"', nombre='"&nombre&"', apellidop='"&apellidop&"', apellidom='"&apellidom&"', imss='"&imss&"', email='"&email&"' where [CampoID] = "& IDAnterior
set rs=oConn.Execute(SQL)
%>
CampoID= Nombre del Campo en mi Base de Datos
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

Owen-Bonilla 24/09/2004 11:02

FORMATO DE FECHAS SENCILLO PERO "AGRADABLE"

<%= formatdatetime((now),vblongdate) %>

Te Desplegara una Fecha tipo: Lunes, 22 de Enero del 2004

Saludos

Saruman 28/09/2004 13:13

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

trasgukabi 23/10/2004 16:32

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)

trasgukabi 01/11/2004 23:28

Q: ¿Cómo puedo saber si estoy en un servidor seguro?
R: Así:
Código:

<%if request.ServerVariables("SERVER_PORT_SECURE")=0 then%>
<!--#INCLUDE VIRTUAL="/includes/cabecera.asp"-->
<%else%>
<!--#INCLUDE VIRTUAL="/includes/cabecerahttps.asp"-->
<%end if%>


Cbas 24/12/2004 11:12

Strings de Conexión
 
P: ¿Cómo me conecto desde ASP con MySQL, ACCESS, SQL, DBF, etc?
R: http://www.connectionstrings.com

ludovico2000 25/01/2005 13:10

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)

[Ver notas al final]


[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%>

NOTAS:


[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.