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 8 - a cura di Paolo Malesci

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


ASP: un esempio pratico parte II

Cominciamo con la pagina di Login, login.asp, che è anche la più semplice.
Controlleremo che user e password siano presenti nel file utenti.txt ed in caso affermativo ritorneremo ad index.asp passando i parametri cmd=LOGIN e user=userID; se non presente ritorneremo subito ad index.asp mentre se la password è errata scriveremo un messaggio di errore.
Il formato di utenti.txt è utente;password;e-mail ed codice è il seguente:

<%
Dim Trovato
Dim UserW
Dim PassW
Trovato = False
UserW = ""
PassW = ""
Dim fso
Dim MyFile
Dim recinp
Dim testo
Dim I
Dim J

Set fso = Server.CreateObject("Scripting.FileSystemObject")
MyFile = Server.MapPath("utenti.txt")
Set recinp = fso.OpenTextFile(MyFile, 1)
Do While not recinp.AtEndOfStream
testo = recinp.ReadLine
I = InStr(testo, ";")
If I > 0 Then
If Trim(Request.Form("Utente")) = Trim(Left(Testo,I-1)) Then
Trovato = True
UserW = Trim(Left(Testo,I-1))
J = InStr(I+1, testo, ";")
PassW = Mid(testo, I+1, J-I-1)
Exit Do
End If
End If
Loop
recinp.Close
set recinp = Nothing
set fso = Nothing

If Not Trovato Then
Response.Buffer = True
Response.Redirect("index.asp")
Response.End
End If
If Request.Form("Passwd") = PassW Then
Response.Buffer = True
Response.Redirect("index.asp?cmd=LOGIN&user=" & UserW)
Response.End
End If
%>

<html>
<head>
<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="index.asp"><img src="chiudi.gif" border=0></a>
<br>
</div>
<br>
</body>
</html>

Da notare che il file utenti.txt deve essere presente altrimenti la Open provoca un errore; inizialmente lo dovremo creare noi vuoto col Blocco Note di Windows.
Inoltre abbiamo dichiarato tutte le variabili anche se VbScript accetta le dichiarazioni implicite; è una buona abitudine poiché lo Script Engine del server impiega un tempo maggiore per allocare le variabili non dichiarate.

Vediamo adesso registra.asp, il programma di registrazione di un nuovo utente.


Nel form di registrazione chiediamo il nome, l'indirizzo e-mail, la password, la riconferma della password e con un Checkbox se si desidera salvare i dati.
Il codice è il seguente :

<%
Dim Trovato
Dim Errore
Dim UserW
Dim fso
Dim MyFile
Dim recinp
Dim testo
Dim I
Trovato = False
Errore = ""
UserW = Trim(Request.Form("Utente"))
MyFile = Server.MapPath("utenti.txt")
Set fso = Server.CreateObject("Scripting.FileSystemObject")
Set recinp = fso.OpenTextFile(MyFle, 1)

Do While not recinp.AtEndOfStream
testo = recinp.ReadLine
I = InStr(testo, ";")
If I > 0 Then
If UserW = Trim(Left(Testo,I-1)) Then
Trovato = True
exit do
End If
End If
Loop
recinp.Close
set recinp = Nothing

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
Response.Buffer = True
Set recinp = fso.OpenTextFile(MyFile, 8) ' Apre For Append
testo = UserW & "; " & Request.Form("Passwd") & "; " _
& Trim(Request.Form("Email"))
recinp.WriteLine(testo) ' Registra sul file
recinp.Close
set recinp = Nothing
set fso = Nothing
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.Redirect "index.asp?cmd=NEWUSER&user=" & UserW
Response.End
End If

set fso = Nothing
%>

<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>
<br>
<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>E-mail:</td>
<td><input type="text" name="Email" size="20"></td>
<td> </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="3"></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="index.asp"><img src="back.gif" border=0></a><br>
</div>
<br>
</body>
</html>

Il blocco iniziale è molto simile a quello di login.asp; poi controlliamo che non vi siano stati errori nella immissione nel Form (campi troppo corti o le 2 password diverse).
Se tutto è andato bene apriamo il file "For Append" e scriviamo la riga con i dati del nuovo utente (è bene fare come abbiamo fatto, prima mettere la riga in una variabile e poi fare WriteLine(variabile)); inoltre se è stato cliccato il Checkbox registriamo il nostro cookie sul PC dell'utente ed infine ritorniamo ad index.asp passandogli i parametri.
Segue poi la parte HTML, destinata ad essere inviata solo in caso di errore.

Affrontiamo adesso un'altro problema: le pagine chiamate da index.asp.
Quando tornano a index.asp devono ripassare indietro gli eventuali parametri ricevuti, ma ci tornerebbe più comodo se fossero delle normali pagine HTML, facilmente visibili e modificabili; poiché l'unica cosa da modificare è l'URL del link alla Home Page possiamo fare nel modo seguente:
sostituiamo la stringa <a href="index.asp"> con <COMMENT>LINK</COMMENT> e la stringa </a> con <COMMENT>/LINK</COMMENT>; in questo modo in IE vedremo l'aspetto definitivo della pagina e potremo fare tutte le modifiche che vogliamo, ma il link non funzionerà.
I vari ricotta1.asp, ricotta2.asp, etc. leggeranno ricotta1.html, ricotta2.html, etc. scriveranno prima con Response.Write tutta la parte fino a <COMMENT>LINK</COMMENT>, poi scriveranno (sempre con Response.Write) il tag href voluto, la parte rimanente fino a <COMMENT>/LINK</COMMENT>, il tag </a> e la parte rimanente.
Vediamo il codice.

<%
Dim fso
Dim MyFile
Dim recinp
Dim testo
Dim TestoOut
Dim I
Dim embedd1
Dim embedd2
Dim sCommand
Dim NewComm
embedd1 = "<COMMENT>LINK</COMMENT>"
embedd2 = "<COMMENT>/LINK</COMMENT>"

MyFile = Server.MapPath("ricotta1.html")
Set fso = Server.CreateObject("Scripting.FileSystemObject")
Set recinp = fso.OpenTextFile(MyFile, 1)
testo = recinp.ReadAll
recinp.Close
Set fso = Nothing

NewComm = ""
sCommand = UCase(Trim(Request.QueryString("cmd")))
If Len(sCommand) > 0 Then
NewComm = "?cmd=" & sCommand & "&user=" & Trim(Request.QueryString("user"))
End If

I = InStr(testo, embedd1)
TestoOut = Left(Testo, 1, I-1)
testo = Right(testo, Len(testo)-I-Len(embedd1)+1)
Response.Write TestoOut
Response Write "<a href=" & Chr(34) & "index.asp" & NewComm & Chr(34) & ">"
I = InStr(testo, embedd2)
TestoOut = Left(Testo, 1, I-1)
testo = Right(testo, Len(testo)-I-Len(embedd2)+1)
Response.Write TestoOut & "</a>"
Response.Write testo
%>

E' abbastanza semplice da costruire e molto comodo in tutte quelle occasioni in cui vogliamo tenere separate la parte ASP dalla parte HTML.
Abbiamo utilizzato la funzione InStr poiché sapevamo la sequenza in cui avremmo trovato i <COMMENT> ma in altri casi potremmo usare la funzione Replace, ad esempio nell'interrogazione di un database per sostituire la stringa
<COMMENT>nomecampo</COMMENT> col valore di nomecampo.

Tutti i file, immagini incluse, sono contenuti in Esempio1.zip (46kb).

Prima di terminare la lezione approfittiamo dell'esempio per introdurre dei concetti più generali.
Sia in login.asp, sia in registra.asp esiste una parte di codice quasi uguale, quella della ricerca su utenti.txt; avremmo potuto scrivere, con lievi aggiustamenti, una unica subroutine ed adoperarla in entrambi i casi?
La risposta è si. Tramite la direttiva <!-- #include file="nomefile" --> da porre all'inizio della nostra pagina ASP possiamo inserire codice scritto in un file a parte.
Il codice presente nel file avrebbe potuto essere:

<%
' Dichiarazione variabili Public
Dim sblnTrovato
Dim sstrUserW
Dim sstrPassW

Sub Cerca(strUser, strPassw)
' Dichiarazione variabili Private
Dim strMyFile
Dim objfso
Dim objRecord
Dim strTesto
Dim intI
Dim intJ

sblnTrovato = False
strPassw = ""
strMyFile = Server.MapPath("\utenti.txt")
Set objfso = Server.CreateObject("Scripting.FileSystemObject")
Set objRecord = objfso.OpenTextFile(strMyFle, 1)

Do While not objRecord.AtEndOfStream
strTesto = objRecord.ReadLine
intI = InStr(strTesto, ";")
If intI > 0 Then
If strUser = Trim(Left(strTesto, intI-1)) Then
intJ = InStr(intI+1, strTesto, ";")
If intJ > 0 Then strPassw = Mid(strTesto, intI+1, intJ-intI-1)
sblnTrovato = True
Exit do
End If
End If
Loop
objRecord.Close
set objRecord = Nothing
set objfso = Nothing
End Sub
%>

Per i nomi delle variabili ci siamo attenuti alle raccomandazioni di Microsoft: il prefisso s indica le variabili Public, seguono poi tre lettere che indicano il tipo, poi il nome.
Nelle nostre pagine dovremo ovviamente utilizzare sblnTrovato, sstrUserW ed sstrPassW, al posto di quelli che avevamo usato, senza dichiararli; per utilizzare la subroutine scriveremo:

Cerca Trim(Request.Form("Utente")), sstrPassW

ovviamente il contenuto di sstrPassW restituito da Cerca ci servirà solo in login.asp, mentre in entrambe testeremo ssblnTrovato.


Si ringrazia per l'articolo Paolo Malesci