ASP->Active Server Pages
C++ | Visual Basic
|
Interpretado:javascript | VBScript
Servidor: PHP | ASP
PROGRAMACIÓN EN ASP:
Las páginas tienen una extensión .ASP
Los tags son <% %>
ejemplo:
prueba.asp
<% response.write "HOLA" %>
Variables:
No hace falta definirlas
dim var1
option explicit obligamos a definir todas las variables (recomendado)
vartype var1
Nos devuelve el tipo de una variable (un número)
vbEmpty --> 0
vbNull --> 1
vbInteger --> 2
vbLong --> 3
vbSingle --> 4
vbDouble --> 5
vbCurrency --> 6
vbDate --> 7
vbString --> 8
vbObject --> 9
vbError --> 10
vbBoolean --> 11
vbVariant --> 12
vbDataObject --> 13
vbBytc --> 17
vbArray --> 8192
Ejemplo:
dim var1
var1=6.0
response.write vartype (var1)
Resultado --> 5 (o sea double)
option explicit
response.write "Hola"
response.write var1
Resultado --> Variable no definida: 'var1'
-----------------------------------------
División Entera --> \
Potencia -- ^
Modulo --> Mod
Operadores de comparación:
=
<>
Concatenar: & (+)
and --> las dos son ciertas
or --> una de las dos es cierta
not -->lo contrario
xor --> cierto si solamente una de las dos es cierta.
function pepe(param1,param2)
pepe=5
end function
exit function para salir de una funcion
Procedimientos
sub PepeProc (par1,par2)
end sub
exit sub para salir del procedimiento
Para llamar a un procedimiento
call PepeProc ("Par1,"par2) o directamente PepeProc "par1","par2"
if condicion then
...
else
...
end if
select case(variable)
case "A": ...
case "B": ...
case "C": ...
case Else: ...
end select
function tipovariable(var)
for next
for a=1 to 5
..
next
do (while | until) ... loop
Do while a>0
...
loop
do until a=0
..
loop
While ... wend (Obsoleto)
For each ... in ...
For each elemento in Mi_Array
Salir bucles
Exit for (for)
Exit loop (while)
----------------------------
i=0
x=1
do while i<=9
i=i+1
resultado=x*i
response.write ""
response.write resultado
loop
----------------------------
Ámbito de las variables
- Página
Dim a
a=5
Esta variable tiene valor dentro de esta página (sólo en la página actual)
- Sesión
Válidas durante toda la visita del usuario (Dura hasta que se cierra el navegador o hasta que pasa un tiempo determinado)
Session("var")=5
- Aplicación
Válidas siempre, no caducan y se puede acceder para todos los usuarios.
Application("var")=7
Global.asa
InetPub/www.root
se carga siempre que un usuario abre una página asp
inicializaciones/terminaciones
session_onstart-->se activa cuando unusuario entra en la página
session_onend-->se desactiva cuando un usuario abandona la sesión pq ha pasado un tiempo o pq ha hecho un session_abandon
application_onstart--> se activa cuando el 1er usuario entra en la página web
application_onend --> se desactiva cuando ya no haya ninguna sesión activa
plantilla para un fichero global:
sub session_onstart
end sub
sub session_onend
end sub
sub application_onstart
application("visitas")=0
end sub
sub application_onend
end sub
PROPIEDADES:
session_id --> identificador de la sesión
timeout --> tiempo que queda de sesión
session.sessionid
MÉTODO:
abandon-->destruye la sesión actual y nos activa el evento session_onend.No destruye la sesión hasta que no se haya ejecutado todo el código.
contents.remove-->elimina una variable de sesión
contents.removeall-->elimina todas las variables de sesión
contents-->colección de elementos añadidos a la sesión
ejemplo:
session("var1")=1
session("var2")=2
Application
Lock --> bloquear
Unlock --> desbloquear
Application.lock
Application.("variable")="Hola"
Application.unlock
El objeto Server:
Propiedad:
ScriptTimeOut --> tiempo en segundos para ejecutar una página, sino lo hace en este tiempo da error. (Es como el max_execution_time = 30 del PHP)
CreateObject -> Crear objeto com
(Objeto COM --> objetos dentro de dlls que se encuentran en el directorio windows, y quedan para todas las aplicaciones windows. Se registran en el sistema, y cualquier programas puede acceder a ellas.
Execute -> ejecutar un ASP
GetLastError -> Último error
MapPath -> Carpeta física
HtmlEncode -> Codificar para HTML
UrlEncode -> Codificar una URL
Ejemplo:
El directorio raiz es:
<%=server.mappath("/") %>
Codigo sin codificar
<% response.write(" si a<b r>c") %>
Codigo codificado
<%=server.htmlencode(" si a<b r>c") %>
Prueba URL
<%=server.urlencode("dir=c/del carmen,25") %>
= sirve para response.write
Transfer -> redirecciona a otra página.
Objeto Request y Response
Request -> obtener variables
Response -> escribir valores
TotalBytes -> los bytes enviados al cliente en la petición.
ClientCertificate -> certificados
Cookies -> cookies
Form -> valoers formulario
QueryString -> valor URL
ServerVariables -> variables servidor
Ejemplo:
(Enviar la cookie antes de nada, o sea arriba de todo)
<% response.cookies("Cantidad")=5 %>
El valor de la cookie es:
<%=request.cookies("Cantidad") %>
Ejemplo Formulario:
<form name="form1" method="post" action="mostrar.asp">
<p> <font face="Verdana, Arial, Helvetica, sans-serif" size="2">Nombre
<input type="text" name="nombre">
</font></p>
<p> <font face="Verdana, Arial, Helvetica, sans-serif" size="2">Dirección
<input type="text" name="dire">
</font></p>
<p> <font face="Verdana, Arial, Helvetica, sans-serif" size="2">Teléfono
<input type="text" name="tel">
</font></p>
<p> <font face="Verdana, Arial, Helvetica, sans-serif" size="2">
<input type="submit" name="Submit" value="Submit">
</font></p>
</form>
---------------------------------------
Su nombre es: <%=request.form("nombre")%>
Su dirección es: <%=request.form("dire")%>
Su teléfono es: <%=request.form("tel")%>
Si el form method="get" entonces no podemos hacer request.form, sino querystring.
method="post" -> request.form
method="get" -> querystring
path_info
path_translated -> direccion fisica del disco duro
query_string -> cadena con parametros
remote_addr -> IP
remote_host -> Nombre de la maquina
request_method -> get o post
script_map -> base del URL
script_name -> ruta virtual
server_port -> puerto servidor
server_port_secure -> puerto SSL
server_protocol ->protocolo de comunicaciones
url -> URL
server_software -> servidor
Server Variables
Ejemplo Info.asp
<%=request.servervariables("server_port") %>
<%=request.servervariables("path_info") %>
<%=request.servervariables("server_software") %>
<%=request.servervariables("server_protocol") %>
<%=request.servervariables("script_name") %>
<%=request.servervariables("remote_host") %>
<%=request.servervariables("remote_addr") %>
etc,etc,etc
Objeto Response
Buffer -> cierto o falso (si es cierto hasta que no se acabe de ejecutar la pagina no se envian los datos, si es falso se va enviando) O todo o nada, si tenemos 50 registros, si el buffer esta true, o nos enseña los 50 o ninguno, si esta en false, nos enseña 10 por ejemplo.
CacheControl -> especificar si la pagina se guardará en caché en el proxy.
Expires -> tiempo que tiene que almacenarse esta pagina en caché.
AppendToLog -> se guardara en el fichero log del servidor.
Clear -> nos borra el buffer
End -> terminamos la pagina, y se envia este el buffer esta true o no.
FlusH -> envia lo que hay en el buffer, si esta true
Redirect -> redirecciona la pagina a otro sitio
Write -> para escribir
Coookies -> colección de galletas
Ejemplo:
<%
For x=1 to 1000
response.write (x)
response.write ""
next
%>
Va saliendo....
Y ahora
<%
response.buffer=true
For x=1 to 1000
response.write (x)
response.write ""
next
response.end
%>
Sale de golpe!!!
Más ejemplos:
login.htm
------------------------------------
<html>
<head>
<title>- Login </title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<form name="form1" method="post" action="comprobar.asp">
<table width="41%" border="0" cellspacing="0" cellpadding="0" bgcolor="#999999" align="center">
<tr bgcolor="#333333">
<td colspan="3"> </td>
</tr>
<tr>
<td width="19%"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Nombre</font></td>
<td width="55%">
<input type="text" name="nombre" maxlength="10">
</td>
<td width="26%" rowspan="3"> </td>
</tr>
<tr>
<td width="19%"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Password</font></td>
<td width="55%">
<input type="password" name="pass" maxlength="20">
</td>
</tr>
<tr>
<td width="19%"> </td>
<td width="55%">
<input type="submit" name="Submit" value="Enviar">
</td>
</tr>
</table>
</form>
</body>
</html>
------------------------------------
comprobar.asp
------------------------------------
<%
if (request.form("nombre")="pepe") and (request.form("pass")="pepe") then
Session("nombre")=request.form("nombre")
response.redirect("correcto.asp")
else
response.redirect("incorrecto.asp")
end if
%>
------------------------------------
correcto.asp
------------------------------------
<%
response.write("Bievenido"&Session("nombre"))
%>
------------------------------------
incorrecto.asp
------------------------------------
<%
response.write("No tienes acceso")
%>
------------------------------------
Teoría:
En el IIS 5.0
ASP Error
ASPCode
Number
Description
File
Line
Column
Source
Category
variable+Error=server.getLastError
Página que abre el servidor cuando hay un erorr --> 500-100.asp
Conexiones con bases de datos
-> ODBC --> se puede conectar con cualquier base de datos que acepte ODBC
¿ Qué es el OBDC ? -> Conexión base de datos a través de Windows. Object Data Base Conection.
ADO -> colección de objetos para conectarse a la BD. WorkSpace, Recordset, etc
Primer paso:
Vamos a crear una base de datos con access:
clientes
IDCliente (autonúmerico)
Nombre
Direccion
Telefono
Clientes.mdb
Configuración
Panel de Control
Fuentes de datos ODBC
Data Source Name (DSN)
DSN Usuario
DSN Archivo (solo de un archivo)
DSN Usuario --> Agregar, Microsoft Acces-Driver, Nombre del Origen Clientes, Base de Datos (Seleccionar y cogemos cliente.mdb, en avanzadas podemos poner password, etc.
Set con= Server.CreateObject("ADODB.CONNECTION")
con.open "DSN=Clientes;UID=Nombre_usuario;PWD=Password;"
a-> Crear RecordSet
set mirs=con.execute("Select * from clientes") -> es como un mysql_query
mirs.eof
mirs.movenext
mirs("Nombre")
etc
b-> Ejecutar una consulta
con.execute=("Update...")
Variable de aplicación mejor, ponerlo en el global.asa, y luego llamarlo con un include.
response.write(mirs("Nombre"))
Ejemplo:
<%
Set con= Server.CreateObject("ADODB.CONNECTION")
con.open "DSN=Clientes;"
set mirs=con.execute("Select * from clientes")
do until mirs.eof
response.write(mirs("Nombre"))
mirs.movenext
loop
%>
Para actualizar y borrar registros:
conexion.asp
<%
Set con= Server.CreateObject("ADODB.CONNECTION")
con.open "DSN=Clientes;"
set mirs=con.execute("Select * from clientes")
do until mirs.eof
response.write("<form method=post action=edit.asp>")
response.write("<input type=hidden name=id value="&mirs("IDCliente")&">")
response.write(mirs("IDCliente"))
response.write("")
response.write(mirs("Nombre"))
response.write("")
response.write(mirs("Direccion"))
response.write("")
response.write(mirs("Telefono"))
response.write("")
response.write("<input type=submit value=Editar>")
response.write("</form>")
response.write("<hr>")
mirs.movenext
loop
%>
edit.asp
<%
Set con= Server.CreateObject("ADODB.CONNECTION")
con.open "DSN=Clientes;"
if request.form("Borrar")="Borrar" then
set mirs=con.execute("DELETE from clientes where IDCliente="&request.form("id")&"")
response.write ("Eliminado")
else
if request.form("Actualizar")="Actualizar" then
set mirs=con.execute("UPDATE clientes SET Nombre='"&request.form("Nombre")&"', Direccion='"&request.form("Direccion")&"', Telefono='"&request.form("Telefono")&"' where IDCliente="&request.form("id")&"")
response.write ("Actualizado")
else
set mirs=con.execute("Select * from clientes where IDCliente="&request.form("id")&"")
response.write("<form method=post>")
response.write("<input type=hidden name=id value="&mirs("IDCliente")&">")
response.write ("Nombre: <input type=text name=Nombre value="&mirs("Nombre")&">")
response.write("")
response.write ("Dirección: <input type=text name=Direccion value="&mirs("Direccion")&">")
response.write("")
response.write ("Telefono: <input type=text name=Telefono value="&mirs("Telefono")&">")
response.write("")
response.write("<input type=submit name=Actualizar value=Actualizar>")
response.write("<input type=submit name=Borrar value=Borrar>")
response.write("</form>")
end if
end if
%>
Funciones
var=array(1,2,3)
Join(matriz,caracter)
Join --> una matriz en una cadena
Split(cadena,delimitador)
Split --> una cadena la convierte en array
(Bod,Byte,CCur,CDate,CDBl,Chr,Clnt,Clong,Str) -> nos convierte cualquier variable en un tipo que le digamos
chr.Asc --> código ASCII
Funciones de Fecha
Time()
Now() --> fecha y hora actual
Date()
DateAdd(Internal,Cantidad,Fecha) --> suma la fecha que le digamos
Day(Fecha) Month(fecha) Year(fecha)
hour(fecha) minute(fecha) second(fecha)
DatePart(Inervalo,Fecha) --> q (cuarto trimestre) w (semana) y (dia del año) ww (semana del año)
FormatDateTime(fecha,formato) -> formatear una fecha o una hora
FormatDateTime(fecha,1)
FormatDateTime(fecha,2)
etc
InputBox(texto,titulo,valorpred,xpos,ypos)
InStr([conocimiento],cadena1, cadena2) -> buscar una cadena en otra (buscamos la cadena 2 en la cadena 1
Left(cadena,longitud)
Right(cadena,longitud)
Mid(cadena,longitud)
Obtener partes de una cadena