Eseguire
una ricerca veloce nell' archivio delle risorse di Visual Basic
Italia®:
|
Preso
dall'archivio...
Premere il pulsante sotto per accedere direttamente ad un articolo
o ad un esempio preso in modo casuale dall'archivio.
|
Ultimo
e-book pubblicato:
"INTRODUZIONE
AI CSS"
Lo scopo del CSS language è quello di controllare lo
stile dei vari elementi che concorrono a formare un
documento HTML.
Si può operare in tre modi collegamento ad un foglio di stile
esterno;definizione degli stili all'inizio
del documento utilizzo della proprietà style all'interno
di un Tag HTML (embedded style). Questo e-book introduttivo
servirà per apprendere tali nozioni fondametali dei fogli
di stile.
Prezzo: € 0.0.
|
Contatti.
Utilizzare l'email generica per domande relative al sito:
oppure scrivere
ad un responsabile di area.
Responsabile
del sito: >Andrea
Martelli
Responsabile area "Corso di VB":
> Giorgio Abraini
|
|
|
|
Corso
di ASP: lezione 13 - a cura di Paolo Malesci |
Revisione
dell'esempio pratico 1 |
Come
prima cosa creiamo il file GestDb.asp nel quale mettiamo le
Functions necessarie per il database; in testa alle pagine
asp che accedono a database metteremo l'include di GestDb.asp.
<%
Dim objConn
Dim objRs
Function OpenDb(nomedb,passw)
Dim Connstring
Dim Snomedb
Set objConn = Server.CreateObject("ADODB.Connection")
Snomedb = Server.MapPath("/database/" &
nomedb)
Connstring = "Driver={Microsoft Access Driver (*.mdb)};DBQ="
& Snomedb & ";"
If Len(Trim(passw)) > 0 Then
Connstring = Connstring & "PWD=" &
passw & ";"
End If
objConn.Open Connstring
End Function
Function OpenRs(mysql,update)
Set objRs = Server.CreateObject("ADODB.Recordset")
If update Then
objRs.LockType = 2
Else
objRs.LockType = 1
End If
objRs.Open mysql,objConn,2,,1
End Function
Function CloseDb()
objConn.Close
set objConn = Nothing
End Function
Function CloseRs()
objRs.Close
set objRs = Nothing
End Function
%>
|
E' praticamente quello che abbiamo visto nella lezione scorsa
e non credo ci sia bisogno di commentarlo.
Oltre all'utilizzo di un database per gli utenti vogliamo
anche usare l'oggetto Session e togliere così quel
metodo noioso di utilizzo della command-line; rinominiamo
index.asp in home.asp e creiamo un nuovo index.asp contenente
le seguenti istruzioni:
<!--
#include file="GestDb.asp" -->
<%
Dim Mysql
Session("Registrato") = 0
Session("User") = ""
If Request.Cookies("Club763")("UserID")
> 0 then
OpenDb("Utenti.mdb","kz7bce42")
Mysql = "SELECT * FROM Utenti WHERE User = '"
_
& Trim(Request.Cookie("Club763")("UserID"))
& "'"
OpenRs(Mysql,False)
If Not objRs.EOF Then
If Trim(Request.Cookie("Club763")("Pwd"))
= objRs.Fields("Password") Then
Session("Registrato") = 1
Session("User") = Trim(Request.Cookie("Club763")("UserID"))
End If
End If
CloseRs()
CloseDb()
End If
Response.Buffer = True
Response.Redirect("home.asp")
Response.End
%>
|
In
questo modo inizializziamo le 2 variabili di sessione a utente
non registrato, poi controlliamo se è presente il nostro
Cookie; in caso affermativo controlliamo Utente e Password con
utenti.mdb e se tutto corrisponde poniamo Registrato=1 ed User=UserID
nelle variabili di sessione; infine chiamiano home.asp.
Da notare una cosa: se non vi sono record che soddisfano una
query il provider ADO restituisce un Recordset vuoto e pone
a True le proprietà BOF ed EOF; altrimenti il Recordset
restituito viene posizionato sul 1° record.
In
home.asp toglieremo per prima cosa lo script iniziale di controllo
della command-line; sostituiremo poi negli script Registrato
con Session("Registrato") e UserW con Session("User");
inoltre, non dovendo più i link passare la command-line,
potremo usare per i primi 3 delle normali pagine html ed avere
così dei normali href a ricotta1.html, ricotta2.html,
ricotta3.html. Lasceremo asp ricette e Forum perché
utilizzeranno i loro database, ma anche questi saranno degli
href normali; utilizzeremo uno script soltanto per nasconderli
agli utenti non registrati.
Il contenuto di home.asp sarà il seguente:
<html>
<head>
<title>IL PORTALE ITALIANO DEGLI AMANTI DELLA RICOTTA</title>
<style type="text/css">
div.Saluto { font-size: 120%;
font-weight: bold; color: red;
z-order: 0;}
div.Login { background: rgb(255,153,0);
border: solid; border-width: thin;
border-color: black; padding: 0.5em;
<%
If Session("Registrato") > 0 Then
Response.Write "visibility : hidden;"
End If
%>
z-order: 1;}
</style>
</head>
<body background="sfondo1.gif" leftmargin=0
topmargin=0>
<img src="logo763.jpg" border=0>
<div class="Saluto"
style="position:absolute; top:90px; left:30px;">
<%
If Session("Registrato") > 0 Then
If Session("Registrato") = 3 Then
Response.Write "benvenuto " & Session("User")
& " !"
Else
Response.Write "bentornato " & Session("User")
& " !"
End If
End If
%>
</div>
<div class="Login"
style="position:absolute; top:64px; left:0px; width=25%;">
<form name="Form1" id="Form1"
method="POST" action="login.asp">
<table width=100% style="font-size:x-small;">
<tr>
<td width="30%">Nome:</td>
<td width="50%"><input type="text"
name="Utente" size="16"></td>
<td width="*"> </td>
</tr>
<tr>
<td>Password:</td>
<td><input type="password" name="Passwd"
size="8"></td>
<td> </td>
</tr>
<tr height="5">
<td colspan="3"></td>
</tr>
<tr>
<td colspan="3" align="center">
<input type="submit" value="logon"
name="B1"></td>
</tr>
</table>
</form>
<b>sei nuovo? <a href="registra.asp">registrati
!<a></b>
</div>
<div style="position:absolute;
top:240px; left:40px;">
<a href="ricotta1.html"><img src="bottone1.gif"
border=0></a>
</div>
<div style="position:absolute;
top:350px; left:100px;">
<a href="ricotta2.html"><img src="bottone2.gif"
border=0></a>
</div>
<div style="position:absolute;
top:440px; left:220px;">
<a href="ricotta3.html"><img src="bottone3.gif"
border=0></a>
</div>
<% If Session("Registrato")
= 0 Then Response.Write "<div style=" &
Chr(34) & "visibility:hidden;" & Chr(34)
& ">" & VbCrLf %>
<div style="position:absolute; top:440px; left:600px;">
<a href="ricette.asp"><img src="bottone4.gif"
border=0></a>
</div>
<div style="position:absolute; top:500px; left:410px;">
<a href="forum763.asp"><img src="bottone5.gif"
border=0></a>
</div>
<% If Session("Registrato") = 0 Then Response.Write
"</div>" & VbCrLf %>
</body>
</html>
|
Così
è diventata una pagina molto più semplice e quindi
anche più facile da modificare, se necessario.
Passiamo
adesso a login.asp; dovremo modificare il controllo user/password
utilizzando il database ed anziché usare la command-line
utilizzare le variabili di sessione e ritornare a home.asp
anziché a index.asp:
<!-- #include
file="GestDb.asp" -->
<%
Dim Trovato
Dim UserW
Dim PassW
Trovato = False
UserW = ""
PassW = ""
OpenDb("Utenti.mdb","kz7bce42")
Dim Mysql
Mysql = "SELECT * FROM Utenti WHERE User='"
& Trim(Request.Form("Utente")) & "'"
OpenRS(Mysql,False)
IF Not objRs.EOF Then
Trovato = True
UserW = objRs.Fields("User")
PassW = objRs.Fields("Password")
End If
CloseRs()
CloseDb()
if Not Trovato
then
Response.Buffer = True
Response.Redirect("home.asp")
Response.End
End If
If Request.Form("Passwd") = PassW Then
Session("Registrato") = 2
Session("User") = UserW
Response.Buffer = True
Response.Redirect("home.asp")
Response.End
End If
%>
<html>
<head>
<meta http-equiv="Content-Language" content="it">
<meta http-equiv="Content-Type" content="text/html;
charset=windows-1252">
<title>Login errato</title>
</head>
<body>
<br>
<div style="position:relative; left:15%; width:70%;
font-family: Verdana, sans-serif; text-align: center;">
<%
Response.write("<b>Password errata</b><br>")
%>
<br>
<br>
<a href="home.asp"><img src="back.gif"
border=0></a>
<br>
</div>
<br>
</body>
</html>
|
Analoghe
saranno anche le modifiche a registra.asp:
<!-- #include
file="GestDb.asp" -->
<%
Dim Trovato
Dim Errore
Dim UserW
Trovato = False
Errore = ""
UserW = Trim(Request.Form("Utente"))
OpenDb("Utenti.mdb","kz7bce42")
Dim Mysql
Mysql = "SELECT * FROM Utenti WHERE User='"
& UserW & "'"
OpenRS(Mysql,False)
IF Not objRs.EOF Then
Trovato = True
End If
CloseRs()
If Trim(Request.Form("Passwd"))
<> Trim(Request.Form("Passwd2")) Then
Errore = "Errore password - ridigita"
End If
If Len(Trim(Request.Form("Passwd") )) <
4 Then
Errore = "Errore: la password deve essere almeno
4 caratteri"
End If
If Len(UserW) < 4 Then
Errore = "Errore: l'utente deve essere almeno 4
caratteri"
End If
If Not Trovato
And Len(Errore) = 0 Then
Mysql = "SELECT * FROM Utenti"
OpenRS(Mysql,True)
objRs.AddNew
objRs.Fields("User") = UserW
objRs.Fields("Password") = Request.Form("Passwd")
objRs.Fields("Email") = Trim(Request.Form("Email"))
objRs.Update
CloseRs()
CloseDb()
Session("Registrato") = 3
Session("User") = UserW
If Request.Form("Ch1") = True Then 'Registra
cookie
Response.Cookies("ForumASP763")("UserID")
= UserW
Response.Cookies("ForumASP763")("Pwd")
= Request.Form("Passwd")
Response.Cookies("ForumASP763")("EMail")
= Trim(Request.Form("Email"))
Response.Cookies("ForumASP763").Expires =
Date + 3650
End If
Response.Buffer = True
Response.Redirect "home.asp"
Response.End
End If
CloseDb()
%>
<html>
<head>
<title>Registrazione</title>
<style type="text/css">
div.Saluto { font-size: 120%;
font-weight: bold; color: red;
z-order: 0;}
div.Login { background: rgb(255,153,0);
border: solid; border-width: thin;
border-color: black; padding: 1em;
z-order: 1;}
</style>
</head>
<body background="sfondo1.gif" leftmargin=0
topmargin=0>
<img src="logo763.jpg" border=0>
<div class="Login"
style="position:relative; top:20px; left:30%; width=40%;">
<form name="Form1" id="Form1"
method="POST">
<table width="100%">
<tr>
<td width="30%">Nome:</td>
<td width="50%"><input type="text"
name="Utente" size="20"></td>
<td width="*"> </td>
</tr>
<tr>
<td width="30%">E-mail:</td>
<td width="50%"><input type="text"
name="Email" size="20"></td>
<td width="*"> </td>
</tr>
<tr>
<td>Password:</td>
<td colspan="2">
<input type="password" name="Passwd"
size="8"> max 8 car.</td>
</tr>
<tr>
<td>ridigita Password:</td>
<td><input type="password" name="Passwd2"
size="8"></td>
<td> </td>
</tr>
<tr>
<td colspan="3"><input type="checkbox"
name="Ch1">
salva Utente e Password in un cookie</td>
</tr>
<tr height="5">
<td colspan="10"></td>
</tr>
<tr>
<td colspan="3" align="center">
<input type="submit" value="invia"
name="B1"></td>
</tr>
</table>
</form>
</div>
<br>
<div class="Saluto" style="position:relative;
top:10px; text-align:center;">
<%
If Trovato Then
Response.write "Utente già presente"
Else
Response.write Errore
End If
%>
</div>
<br>
<div style="position:relative; top:60px; text-align:center;">
<a href="home.asp"><img src="back.gif"
border=0></a><br>
</div>
<br>
</body>
</html>
|
E
così abbiamo finito: tutti i files (incluso utenti.mdb
e ricotta1.html) sono contenuti in Esempio1ADO.zip (Download
-54Kb); ricordatevi che utenti.mdb deve essere in una sottocartella
chiamata database della cartella contenente tutti gli altri
files dell'applicazione.
Naturalmente avremmo anche potuto seguire una strada intermedia,
ovvero lasciare la gestione tramite command-line ed utilizzare
ADO per gestire il database utenti; in questo modo, non utilizzando
l'oggetto Session, non avremmo avuto bisogno che il browser
dell'utente sia configurato per consentire la registrazione
di Cookies.
|
|