Connessione al database con Visual Basic NET? Lo trovi su Opentraining.it Visual Basic Italia
PRINCIPALE > CORSO DI ASP

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.
Presentazione:
REAL SOFTWARE RILASCIA LA VERSIONE 5.0 di REALbasic per Windows






Gorizia, 5 maggio 2003 - Active, distributore in esclusiva di REALSoftware, Austin, Tx, annuncia la disponibilità di REALbasic 5.0 per Windows, uno strumento per lo sviluppo semplice da usare che permette agli utenti Windows di tutti i livelli di creare applicazioni personalizzate e di compilarle sia per la piattaforma Windows che per quella Macintosh.
[>>]

http://www.active-software.com

 

Contatti. Utilizzare l'email generica per domande relative al sito:
Porre 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

Questa lezione, consultata da 15212 utenti, è stata giudicata di ottimi contenuti , con un'esposizione perfettamente comprensibile e con un livello di approfondimento ottimo da 90 votanti.


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.


Si ringrazia per l'articolo Paolo Malesci