Il contenuto di questa pagina richiede una nuova versione di Adobe Flash Player.

Scarica Adobe Flash Player

Vuoi fatto un sito come questo, ti servono dei biglietti di compleanno, vuoi una maglietta personalizzata, ci penso io... contattami!!!Cellule staminali, una delle ultime scoperte in campo medico, con le quali si possono curare molte malattia, anche mortali... infoVisita il nuovo centro commerciale di davidanna23.com, dove puoi comprare e vendere qualsiasi cosa gratuitamente... clicca qui!!!

Come realizzare un sito dinamico in .asp

Guida realizzata da Salvatore Aranzulla, il quale ringrazio di cuore

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 1 di 161

Crea il tuo sito in ASP!

di Salvatore Aranzulla

Prima edizione – Luglio 2004

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 2 di 161

Sai che è possibile creare un sito con guestbook, news, sondaggi e

tutto quello che puoi immaginare con le ASP di Microsoft?

Tutti i trucchi in questo libro.

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 3 di 161

(Sottospecie di copertina che ho creato per questo libro free)

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 4 di 161

Note per la distribuzione

Questo libro è distribuibile gratuitamente su internet, per esempio mettendolo nel

vostro sito o distribuendolo nei circuiti peer-to-peer, senza alcuna restrizione, purché:

Non vi facciate pagare (tranne ovviamente il supporto per distribuirlo, tipo il

floppy, il cd)

Vi sia il mio nome in TUTTE le pagine

Questo testo rimanga inalterato

Comunque il fatto che questo libro è distribuibile liberamente non altera né

indebolisce in alcun modo il diritto d'autore (copyright), che rimane mio, secondo

le leggi vigenti.

Se i precedenti punti non vengono rispettati, la distribuzione è illegale e,

secondo le leggi vigenti, potrei farvi pure causa e vincere spudoratamente, ma

non mi sembra il caso, quindi non “giocate” su queste cose.

Se avete amici che vorrebbero creare un sito utilizzando le ASP (Active Server Pages)

passategli questo libro :)

Se avete un sito di informatica/programmazione potete inserire questo libro e/o

segnalarlo, offrirete così degli ottimi (almeno spero :P) tutorial per creare un sito web.

Consigli, errori, aggiornamenti

Questa è la prima edizione, quindi sicuramente vi saranno molti orrori ed imperfezioni,

aspetto i vostri consigli, dubbi via email: mirabilweb@tiscali.it

Se volete essere aggiornati sulle nuove pubblicazioni potete visitare il mio sito

http://mirabilweb.altervista.org. Segnalo inoltre il mio sito http//www.hardwaremax.it

Che noia.. un libro di programmazione? Spuff!

Questo è quello che diranno tutti vedendo questo libro a prima vista. In questo libro

NON vi è teoria, ma SOLO pratica. Cercherò di spiegarvi tutti i trucchi per

realizzare un sito completo e dinamico in ASP. Questo libro è adatto anche a chi ha

una conoscenza di base delle ASP e non è un esperto. I “non esperti” non hanno

assolutamente nulla da vergognarsi “non si nasce imparati” e questo libro è fatto

anche per loro, per far apprendere a tutti come sia facile creare un sito completo in

poco tempo ;)

Alla fine del libro trovate la sezione “Dubbi? Risolviamoli”, nella quale pubblicherò i

vostri dubbi e i relativi chiarimenti sugli script di questo libro. Ho già inserito alcune

domande che potrebbero venire spontanee ai lettori di questo libro…

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 5 di 161

Sommario

NOTE PER LA DISTRIBUZIONE .......................................................................4

CONSIGLI, ERRORI, AGGIORNAMENTI ..............................................................4

CHE NOIA.. UN LIBRO DI PROGRAMMAZIONE? SPUFF!............................................4

CREARE UN GUEST-BOOK!.................................................................... 8

CREAZIONE DATABASE ..............................................................................8

PAGINE PER VISUALIZZARE I MESSAGGI............................................................9

PAGINE PER INSERIRE I MESSAGGI ............................................................... 12

CREAZIONE DELLE PAGINE PER LAMMINISTRATORE............................................. 14

GESTIONALE PER LE NEWS DEL NOSTRO SITO................................... 20

CREAZIONE DATABASE ............................................................................. 20

CREAZIONE PAGINE PER LA VISUALIZZAZIONE DELLE NEWS.................................... 21

CREAZIONE PAGINE DI AMMINISTRAZIONE NEWS ............................................... 25

SEGNALA SITO AD UN AMICO! ........................................................... 35

I SONDAGGI....................................................................................... 39

CREAZIONE DEL DATABASE ........................................................................ 39

CREAZIONE PAGINA PER INSERIMENTO/VISUALIZZAZIONE DEI RISULTATI DEI SONDAGGI .. 40

PAGINE PER GESTIRE IL SONDAGGIO ............................................................. 45

SITO MULTI LINGUA .......................................................................... 50

ROTAZIONE BANNER.......................................................................... 53

CREAZIONE FILE CON I DATI DEI BANNER ........................................................ 53

CREAZIONE PAGINA PER LA VISUALIZZAZIONE DEI BANNER.................................... 54

PAGINE PER PORTARE LUTENTE SUL SITO DEL BANNER......................................... 55

CREARE UNA NEWSLETTER................................................................. 56

CREAZIONE DATABASE ............................................................................ 56

PAGINE PER LA REGISTRAZIONE/ELIMINAZIONE DALLA NEWSLETTER.......................... 56

PAGINE PER LAMMINISTRATORE DEL SITO ....................................................... 59

FRAME SOPRA I SITI ESTERNI ........................................................... 66

UTENTI CONNESSI ............................................................................. 69

TEMA UGUALE PER LE PAGINE DEL NOSTRO SITO.............................. 71

PIÙ PAGINE IN UNA........................................................................... 73

SEZIONI RISERVATE .......................................................................... 75

PROBLEMA 1: PROTEGGERE UNA SEZIONE AD UN SOLO UTENTE............................... 75

PROBLEMA 2: PROTEGGERE UNA SEZIONE A PIÙ UTENTI ....................................... 77

Creazione DataBase (DB) .................................................................78

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 6 di 161

Creazione pagine per la registrazione.................................................79

Creazione pagine per l’invio di password smarrite ................................86

Creazione pagine per l’identificazione.................................................90

Esempio di sezione riservata.............................................................93

Modifica dati utenti..........................................................................95

Creazione parte amministrativa per la gestione di tutto lo script ............99

Personalizzazioni........................................................................... 107

CREARE UNA CHAT ........................................................................... 111

UTILIZZARE UN DATABASE (DB) ACCESS ..................................................... 111

UTILIZZARE LE APPLICATION.................................................................... 111

CONFLITTI CON ALTRE PARTI DEL SITO......................................................... 125

STRUMENTI PER LAMMINISTRATORE ........................................................... 125

CONTA CLICK ................................................................................... 127

CREAZIONE DATABASE .......................................................................... 127

CREAZIONE PAGINE PER REGISTRARE I CLICK ................................................. 128

CREAZIONE PAGINE PER LAMMINISTRATORE .................................................. 129

NUMERI, FRASI, IMMAGINI E… CASUALI! ........................................ 135

GENERARE UN NUMERO RANDOM................................................................ 135

FRASI CASUALI ................................................................................... 136

IMMAGINI CASUALI ............................................................................... 138

DOVE INSERIRE QUESTI SCRIPT? ............................................................... 139

PAROLE INDESIDERATE ................................................................... 140

APPLICHIAMO LA PULIZIA DELLE PAROLE INDESIDERATE AL NOSTRO GUESTBOOK ......... 143

APPLICHIAMO LA PULIZIA DELLE PAROLE INDESIDERATE ALLA NOSTRA CHAT............... 143

MATEMATICA & ASP? ....................................................................... 144

SOMMA ............................................................................................ 144

SOTTRAZIONE .................................................................................... 144

MOLTIPLICAZIONE................................................................................ 144

SOTTRAZIONE .................................................................................... 144

ELEVAMENTO A POTENZA ........................................................................ 145

ESPRESSIONI ARITMETICHE SEMPLICI .......................................................... 145

MAGGIORE/MINORE DI .......................................................................... 146

UGUALE A ......................................................................................... 146

ALCUNE FUNZIONI DI ASP ............................................................... 148

REPLACE........................................................................................... 148

UCASE ............................................................................................. 148

LCASE ............................................................................................. 149

LEFT ............................................................................................... 149

RIGHT ............................................................................................. 150

LEN ................................................................................................ 150

TRIM ............................................................................................... 151

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 7 di 161

STRREVERSE...................................................................................... 152

LE DATE E GLI ORARI....................................................................... 153

FORMATTARE LE DATE............................................................................ 153

DIFFERENZA FRA DATE ........................................................................... 154

SOSTITUIAMO LE FACCINE CON DELLE IMMAGINI........................... 157

APPLICHIAMO QUESTA FUNZIONE AL NOSTRO GUESTBOOK................................... 159

APPLICHIAMO QUESTA FUNZIONE ALLA NOSTRA CHAT ........................................ 159

ASSOCIARE QUESTA FUNZIONE A QUELLA PER LA RIMOZIONE DELLE PAROLE INDESIDERATE

..................................................................................................... 159

DUBBI? RISOLVIAMOLI! .................................................................. 160

DATABASE......................................................................................... 160

UNIAMO GLI SCRIPT .............................................................................. 160

REMPLACE, REMPLACE… ......................................................................... 161

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 8 di 161

Capitolo 1

Creare un Guest-Book!

In questa lezione vedremo come creare un Guest-Book cioè un libro degli ospiti, per

far aggiungere ai nostri visitatori i loro commenti sul nostro sito.

La realizzazione può essere divisa in più parti:

Creazione database

Creazione delle pagine per visualizzare i messaggi

Creazione delle pagine per inserire i messaggi

Creazione delle pagine per l’amministratore

Creazione Database

Per la creazione del database ho usato il famoso Microsoft Access, versione 2000

(presente nel pacchetto Microsoft Office).

Avviamo Access e selezioniamo la creazione di un database vuoto:

Quindi diamo un nome al nostro database, che conterrà i nostri dati (i messaggi), e

salviamolo col nome di “database.mdb”.

Creiamo quindi una tabella in visualizzazione struttura:

... con i seguenti campi:

Id – Tipo Campo: Contatore

Titolo - Tipo Campo: Testo

Messaggio - Tipo Campo: Memo

Autore - Tipo Campo: Testo

Email - Tipo Campo: Testo

Data - Tipo Campo: Testo

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 9 di 161

Chiudiamo la creazione della tabella (con la X in alto a destra della creazione della

tabella) e, rispondendo affermativamente alle domande che ci verranno poste,

salviamola col nome di “GuestBook_messaggi”.

Pagine per visualizzare i messaggi

Per la visualizzazione dei messaggi scritti nel guest-book creeremo la pagina

guestbook.asp”. Si tratta di una pagina che preleva i messaggi inseriti nel database

e li visualizza, impaginandoli.

Ecco il suo codice, commentato nelle sue parti:

<html>

<head>

<title>MIO GUESTBOOK</title>

</head>

<body>

<p align="center"><font size="4" face="Verdana"><b>Messaggi

GuestBook</b></font></p>

<!-- #INCLUDE FILE="adovbs.inc" -->

<%

' NUMERO DI MESSAGGI PER PAGINA

iPageSize = 5

If Request.QueryString("page") = "" Then

iPageCurrent = 1

Else

iPageCurrent = CInt(Request.QueryString("page"))

End If

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 10 di 161

If Request.QueryString("order") = "" Then

strOrderBy = "id"

Else

strOrderBy = Request.QueryString("order")

End If

' PERCORSO DEL DATABASE

url_DB = "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.mappath("/mdbdatabase/

database.mdb")

Set Conn = Server.CreateObject("ADODB.Connection")

conn.Open url_DB

Set RS = Server.CreateObject("ADODB.Recordset")

' FA LA RICHIESTA AL DATABASE

sql = "SELECT * FROM GuestBook_Messaggi ORDER BY " & strOrderBy & " DESC;"

RS.Open sql, conn, adOpenKeyset

RS.PageSize = iPageSize

RS.CacheSize = iPageSize

iPageCount = RS.PageCount

If iPageCurrent > iPageCount Then iPageCurrent = iPageCount

If iPageCurrent < 1 Then iPageCurrent = 1

' NESSUN MESSAGGIO INSERITO -> VIENE VISUALIZZATO UN MESSAGGIO CHE

INFORMA CHE NON E' PRESENTE

' NEMMENO UN MESSAGGIO NEL GUESTBOOK

If iPageCount = 0 Then

%><hr>

<p align="center"><b><font size="2" face="Verdana">Nessun messaggio inserito

nel guestbook!</font></b></p>

<hr>

<%

Else

RS.AbsolutePage = iPageCurrent

iRecordsShown = 0

' SE I MESSAGGI SONO PRESENTI NEL GUESTBOOK, LI MOSTRA

Do While iRecordsShown < iPageSize And Not RS.EOF

%>

<hr>

<table border="0" cellpadding="0" cellspacing="0" width="64%">

<tr>

<td width="28%"><font face="Verdana" size="2">Titolo

Commento:</font></td>

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 11 di 161

<td width="72%"><b><font face="Verdana"

size="2"><%=RS("titolo")%></font></b></td>

</tr>

<tr>

<td width="28%"><font face="Verdana" size="2">Commento:</font></td>

<td width="72%"><font face="Verdana"

size="2"><%=RS("messaggio")%></font></td>

</tr>

<tr>

<td width="28%"><font face="Verdana" size="2">Autore:</font></td>

<td width="72%"><font face="Verdana" size="2"><b><a

href="mailto:<%=RS("email")%>"><%=RS("autore")%></a></b></font></td>

</tr>

<tr>

<td width="28%"><font face="Verdana" size="2">Data

inserimento:</font></td>

<td width="72%"><font face="Verdana"

size="2"><b><%=RS("data")%></b></font></td>

</tr>

</table>

<hr>

<%

' COMPLETA LA VISUALIZZAZIONE DEI MESSAGGI E CHIUDE LA CONNESSIONE

' AL DATABASE

iRecordsShown = iRecordsShown + 1

RS.MoveNext

Loop

End If

RS.Close

Set RS = Nothing

Conn.Close

%><center>

<%

' MOSTRA IL NUMERO DELLE PAGINE,

' DATO CHE VERRANNO MOSTRATI

' IN QUESTO ESEMPIO 5 MESSAGGI PER PAGINA

For x=1 to iPageCount

%>

<font face="Verdana" size="2">[ <b> <a

href="guestbook.asp?page=<%=x%>&order=<%= Server.URLEncode(strOrderBy)

%>"><%=x%></a></b> ]</font>

<%

next

%>

<p align="center"><b><font size="2" face="Verdana"><a

href="aggiungi.asp">Inserisci messaggio</a></font></b></p>

</body>

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 12 di 161

</html>

Da notare è che all’inizio della pagina viene inclusa la pagina “adovbs.inc”, che

contiene alcune costanti necessarie per il funzionamento della pagina e più

precisamente per i database. Questo file può essere scaricato dal mio sito

http://mirabilweb.altervista.org o cercando su un motore di ricerca “adovbs.inc” (ad

esempio su Google, http://www.google.it).

Pagine per inserire i messaggi

La pagina per inserire i messaggi si chiamerà “aggiungi.asp”, in questa pagina si

trova un modulo da compilare con le varie informazioni del messaggio (nome, email,

commento, ecc...), i dati verranno poi inviati alla pagina “inserisci.asp” che li inserirà

nel database.

Ecco il codice della pagina “aggiungi.asp”, si tratta di semplice codice HTML:

<html>

<head>

<title>MIO GUESTBOOK</title>

</head>

<body>

<p align="center"><b><font size="4" face="Verdana">Aggiungi un Messaggio nel

GuestBook</font></b></p>

<form method="POST" action="inserisci.asp">

<table border="0" cellpadding="0" cellspacing="0" width="64%">

<tr>

<td width="28%"><font face="Verdana" size="2">Titolo

Commento:</font></td>

<td width="72%"><b><font face="Verdana" size="2"><input type="text"

name="titolo" size="20"></font></b></td>

</tr>

<tr>

<td width="28%"><font face="Verdana" size="2">Commento:</font></td>

<td width="72%"><font face="Verdana" size="2"><textarea rows="5"

name="commento" cols="36"></textarea></font></td>

</tr>

<tr>

<td width="28%"><font face="Verdana" size="2">Nome:</font></td>

<td width="72%"><font face="Verdana" size="2"><input type="text"

name="autore" size="20"></font></td>

</tr>

<tr>

<td width="28%"><font face="Verdana" size="2">Email:</font></td>

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 13 di 161

<td width="72%"><font face="Verdana" size="2"><b><input type="text"

name="email" size="20"></b></font></td>

</tr>

<tr>

<td width="100%" colspan="2"><input type="submit" value="Invia"

name="B1"><input type="reset" value="Reimposta" name="B2"></td>

</tr>

</table>

</form>

<p align="center"><b><font size="2" face="Verdana"><a

href="guestbook.asp">Leggi

GuestBook</a></font></b></p>

</body>

</html>

I dati inseriti verranno inviati alla pagina “inserisci.asp”:

<html>

<head>

<title>MIO GUESTBOOK</title>

</head>

<!-- #INCLUDE FILE="adovbs.inc" -->

<body>

<%

' RICHIEDE I CAMPI DAL FORM

titolo = Replace(Request.Form("titolo"), "'", "&#8242;")

' IMPOSTA L'INVIO A CAPO

'(RIMPIAZZA GLI INVII A CAPO NEL MESSAGGIO COL TAG HTML <BR>), "'",

"&#8242;")

messaggio = Replace(Replace(Request.Form("commento"), chr(13), "<BR>", 1) , "'",

"&#8242;")

autore = Replace(Request.Form("autore"), "'", "&#8242;")

email = Replace(Request.Form("email"), "'", "&#8242;")

data = Date()

' CONTROLLO CHE I CAMPI SIANO STATI COMPILATI CORRETTAMENTE

IF titolo = "" or messaggio = "" or autore = "" or Instr(email, "@") = 0 or Instr(email,

".") = 0 then

' UNO DEI CAMPI E' VUOTO

%>

<hr>

<p align="center"><font face="Verdana" size="3"><b>Torna indietro e compila

tutti i campi correttamente!</b></font></p>

<hr>

<%

' ALTRIMENTI AGGIUNGE IL MESSAGGIO

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 14 di 161

else

' PERCORSO DEL DATABASE

url_DB = "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.mappath("/mdbdatabase/

database.mdb")

Set Conn = Server.CreateObject("ADODB.Connection")

conn.Open url_DB

' APRE LA CONNESSIONE AL DATABASE

Set RecSet = Server.CreateObject("ADODB.Recordset")

SQL = "SELECT * FROM GuestBook_Messaggi"

RecSet.Open SQL, Conn, adOpenStatic, adLockOptimistic

' AGGIUNGE IL MESSAGGIO NEL DATABASE

Recset.Addnew

RecSet("titolo") = titolo

RecSet("messaggio") = messaggio

RecSet("autore") = autore

RecSet("email") = email

RecSet("data") = data

' AGGIORNA IL DATABASE, CHIUDE LA CONNESSIONE

' E PORTA L'UTENTE NEL GUESTBOOK

RecSet.Update

RecSet.Close

Conn.Close

Response.Redirect "guestbook.asp"

end if

%>

</body>

</html>

Ed... ecco pronto il nostro guest-book (nella parte utente)!

Creazione delle pagine per l’amministratore

Passiamo ora alla creazione delle pagine per l’amministratore, per l’eliminazione di

messaggi indesiderati! Creiamo una cartella “admin” e creiamo adesso due file (che

dovranno essere inseriti in questa cartella):

Index.asp (Che identifica l’utente come amministratore)

Gestione_Guestbook.asp (Per visualizzare/eliminare i messaggi indesiderati)

Ecco il codice della pagina “index.asp”:

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 15 di 161

<%

' CONTROLLA SE I DATI INSERITI NEL CAMPO DI LOGIN SONO ESATTI

' USERNAME AMMINISTRATORE

username = "admin"

' PASSWORD AMMINISTRATORE

password = "admin"

IF Lcase(Request.Form("username")) = Lcase(username) and

Lcase(Request.Form("password")) = Lcase(password) then

' I DATI SONO ESATTI E SI VIENE IDENTIFICATI COME AMMINISTRATORE

' E PORTATI NELLA PAGINA "GESTIONE_GUESTBOOK.ASP"

session("amministratore") = true

Response.Redirect "Gestione_GuestBook.asp"

End if

%>

<html>

<head>

<title>GESTIONE GUESTBOOK</title>

</head>

<body>

<p align="center">&nbsp;</p>

<p align="center"><b><font size="4" face="Verdana">Gestione

GuestBook!</font></b></p>

<form method="POST" action="index.asp">

<div align="center">

<center>

<table border="0" cellpadding="0" cellspacing="0" width="39%">

<tr>

<td width="50%"><font face="Verdana" size="2">Username:</font></td>

<td width="50%"><input type="text" name="username" size="20"></td>

</tr>

<tr>

<td width="50%"><font face="Verdana" size="2">Password:</font></td>

<td width="50%"><input type="password" name="password"

size="20"></td>

</tr>

<tr>

<td width="100%" colspan="2" height="5">

</td>

</tr>

<tr>

<td width="100%" colspan="2">

<p align="center"><input type="submit" value="Invia" name="B1"><input

type="reset" value="Reimposta" name="B2"></td>

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 16 di 161

</tr>

</table>

</center>

</div>

</form>

<p align="center">&nbsp;</p>

</body>

</html>

Ecco la pagina “Gestione_GuestBook.asp”, in questa pagina vengono visualizzati i

messaggi del Guest Book e, cliccando sopra di essi, questi verranno eliminati dal

database:

<%

' CONTROLLA SE SI E' LOGGATI COME AMMINISTRATORE

IF Session("amministratore") <> True Then

Response.Redirect "index.asp"

End if

%>

<html>

<head>

<title>GESTIONE GUESBOOK</title>

</head>

<!-- #INCLUDE FILE="../adovbs.inc" -->

<body>

<p align="left"><b><font size="4" face="Verdana">&gt; Gestione

GuestBook!</font></b></p>

<%

' NUMERO DI MESSAGGI PER PAGINA

iPageSize = 20

If Request.QueryString("page") = "" Then

iPageCurrent = 1

Else

iPageCurrent = CInt(Request.QueryString("page"))

End If

If Request.QueryString("order") = "" Then

strOrderBy = "id"

Else

strOrderBy = Request.QueryString("order")

End If

' PERCORSO DEL DATABASE

url_DB = "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.mappath("/mdbdatabase/

database.mdb")

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 17 di 161

Set Conn = Server.CreateObject("ADODB.Connection")

conn.Open url_DB

Set RS = Server.CreateObject("ADODB.Recordset")

' FA LA RICHIESTA AL DATABASE

sql = "SELECT * FROM GuestBook_Messaggi ORDER BY " & strOrderBy & " DESC;"

RS.Open sql, conn, adOpenKeyset

RS.PageSize = iPageSize

RS.CacheSize = iPageSize

iPageCount = RS.PageCount

If iPageCurrent > iPageCount Then iPageCurrent = iPageCount

If iPageCurrent < 1 Then iPageCurrent = 1

' SE E' ALMENO PRESENTE UN MESSAGGIO NEL GUESTBOOK:

If iPageCount > 0 Then

%>

<p align="left"><font face="Verdana" size="2">Ecco i messaggi inseriti, fai

click sopra il loro titolo per eliminarli:</font></p>

<table border="0" cellpadding="2" width="100%">

<tr>

<td width="2%" bgcolor="#C3D3DB">&nbsp;</td>

<td width="98%" bgcolor="#C3D3DB"><font face="Verdana" size="2"><b>Titolo

Messaggio</b></font></td>

</tr>

<%

' MOSTRA TUTTI I MESSAGGI DEL GUESTBOOK

RS.AbsolutePage = iPageCurrent

iRecordsShown = 0

' SE I MESSAGGI SONO PRESENTI NEL GUESTBOOK, LI MOSTRA

Do While iRecordsShown < iPageSize And Not RS.EOF

%>

<tr>

<td width="2%"><font face="Verdana" size="2">&gt;</font></td>

<td width="98%"><font face="Verdana" size="2"><a

href="Gestione_GuestBook.asp?operazione=elimina&id=<%=RS("id")%>"><%=RS("

titolo")%></a></font></td>

</tr>

<%

iRecordsShown = iRecordsShown + 1

RS.MoveNext

Loop

RS.Close

Set RS = Nothing

%>

</table><center>

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 18 di 161

<%

' MOSTRA IL NUMERO DELLE PAGINE

' DATO CHE VERRANNO MOSTRATI

' IN QUESTO ESEMPIO 5 MESSAGGI PER PAGINA

For x=1 to iPageCount

%>

<font face="Verdana" size="2">[ <b> <a

href="Gestione_Guestbook.asp?page=<%=x%>&order=<%=

Server.URLEncode(strOrderBy) %>"><%=x%></a></b> ]</font>

<%

Next

' NESSUN MESSAGGIO PRESENTE

Else

%>

<p align="left"><font face="Verdana" size="2">Nessun messaggio presente nel

guesbook!</font></p>

<%

End IF

%>

</body>

</html>

<%

' SE VIENE PASSATO UN VALORE DI ID MESSAGGIO GUESTBOOK

' E LA QUERYSTRING OPERAZIONE E' UGUALE A "ELIMINA"

' VIENE ELIMINATO IL MESSAGGIO SELEZIONATO

If Request.QueryString("operazione") = "elimina" and Request.QueryString("id")<>""

then

Set RecSet = Server.CreateObject("ADODB.Recordset")

' PRELEVA IL MESSAGGIO DAL DATABASE

SQL = "SELECT * FROM GuestBook_Messaggi where id = "&

Request.QueryString("id") &""

RecSet.Open SQL, Conn, adOpenStatic, adLockOptimistic

' CONTROLLA SE ESISTE E LO ELIMINA

If RecSet.Eof = False Then

RecSet.Delete

RecSet.Update

End IF

RecSet.Close

Conn.Close

Set RecSet = Nothing

Set Conn = Nothing

Response.Redirect "Gestione_GuestBook.asp"

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 19 di 161

End IF

%>

Abbiamo così finito la creazione del nostro (stupendo) guestbook!

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 20 di 161

Capitolo 2

Gestionale per le news del nostro sito

Può capitare di dover creare una sezione per le news nel nostro sito web, aggiornare e

creare a mano le varie pagine per le news è una operazione molto lunga e noiosa,

vediamo invece come realizzare un sistema in ASP per la gestione delle news con un

semplice database!

La realizzazione dello script può essere divisa in:

Creazione database

Creazione pagine per la visualizzazione delle news

Creazione pagine di amministrazione news

Creazione database

Per la creazione del database ho usato il famoso Microsoft Access, versione 2000

(presente nel pacchetto Microsoft Office).

Avviamo Access e selezioniamo la creazione di un database vuoto:

Quindi diamo un nome al nostro database, che conterrà le varie news, e salviamolo

col nome di “database.mdb”.

Creiamo quindi una tabella in visualizzazione struttura:

... con i seguenti campi:

ID – Tipo campo: Contatore

Titolo – Tipo campo: Testo (Il titolo della news)

Data – Tipo campo: Testo (La data di inserimento della news)

Contenuto – Tipo campo: Memo (Il contenuto della news)

Autore – Tipo campo: Testo (L’autore della news)

Chiudiamo la creazione della tabella (con la X in alto a destra della creazione della

tabella) e, rispondendo affermativamente alle domande che ci verranno poste,

salviamola col nome di “News”.

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 21 di 161

Creazione pagine per la visualizzazione delle news

Innanzitutto scriviamo uno script ASP che ci permetta di visualizza le ultime news (ad

esempio le ultime 10 news) nella homepage del nostro sito o in qualsiasi altro luogo

noi vogliamo:

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

<%

' PERCORSO DEL DATABASE

url_DB = "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.mappath("/mdbdatabase/

database.mdb")

Set Conn = Server.CreateObject("ADODB.Connection")

conn.Open url_DB

Set RecSet = Server.CreateObject("ADODB.Recordset")

' PRELEVA LE ULTIME 10 NEWS DAL DATABASE (SE SONO PRESENTI)

SQL = "SELECT TOP 10 * FROM NEWS ORDER BY ID DESC"

RecSet.Open SQL, Conn, adOpenStatic, adLockOptimistic

' CONTROLLA SE SONO PRESENTI NEWS NEL DB

If RecSet.Eof = False Then

%>

<table border="0" cellpadding="0" cellspacing="0" width="34%">

<%

' VISUALIZZA LE PRIME 10 NEWS

Do until RecSet.Eof

%>

<tr>

<td width="6%"><font face="Verdana" size="2">&gt;</font></td>

<td width="94%"><font face="Verdana" size="2"><a

href="leggi_news.asp?id=<%=RecSet("id")%>"><%=RecSet("titolo")%></a></font

></td>

</tr>

<%

RecSet.Movenext

Loop

%>

</table>

<%

End IF

RecSet.Close

Conn.Close

Set Conn = Nothing

Set RecSet = Nothing

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 22 di 161

%>

Come si nota, i titoli delle news portano alla pagina “leggi_news.asp”, alla quale

viene, inoltre, passata la querystring “id”, con l’ID della news.

Ecco il codice della pagina “leggi_news.asp”:

<html>

<head>

<title>NEWS</title>

</head>

<body>

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

<%

' RICHIEDE L'ID

ID = Request("ID")

' SE NON E' STATO PASSATO UN VALORE VALIDO

' COME ID, IMPOSTA QUESTO AD UNO

If not ISNumeric(ID) or Len(ID) = 0 Then

ID = 1

End IF

' SE L'ID E' UGUALE A ZERO

' LO IMPOSTA UGUALE A UNO

IF ID = 0 Then

ID = 1

End IF

' PERCORSO DEL DATABASE

url_DB = "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.mappath("/mdbdatabase/

database.mdb")

Set Conn = Server.CreateObject("ADODB.Connection")

conn.Open url_DB

Set RecSet = Server.CreateObject("ADODB.Recordset")

' PRELEVA LA NEWS DAL DB, IN BASE ALL'ID PASSATO

SQL = "SELECT * FROM NEWS WHERE ID = " & ID &""

RecSet.Open SQL, Conn, adOpenStatic, adLockOptimistic

' CONTROLLA SE LA NEWS E' REALMENTE PRESENTE

If RecSet.Eof = False Then

' VISUALIZZA LA NEWS, PRELEVANDO DAL DB I VARI CONTENUTI (TITOLO, DATA,

AUTORE, ECC...):

%>

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 23 di 161

<p><b><font face="Verdana" size="4">&gt; <%=RecSet("titolo")%>

</font></b><font face="Verdana" size="2">di<b>

<%=RecSet("autore")%> </b>- <b><%=RecSet("data")%></b></font></p>

<p><font face="Verdana" size="2"><%=RecSet("contenuto")%></font></p>

<p>&nbsp;</p>

<%

End IF

RecSet.Close

Conn.Close

Set Conn = Nothing

Set RecSet = Nothing

%>

</body>

</html>

Creiamo adesso invece la pagina “archivio_news.asp”, nella quale saranno

visualizzati i titoli delle precedenti news, quindi appunto questa pagina avrà la

funzione di un archivio news:

<html>

<head>

<title>ARCHIVIO NEWS</title>

</head>

<body>

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

<font face="Verdana" size="4"><b>&gt; Archivio news</b></font><br><br>

<%

' NUMERO DI NEWS PER PAGINA

iPageSize = 15

If Request.QueryString("page") = "" Then

iPageCurrent = 1

Else

iPageCurrent = CInt(Request.QueryString("page"))

End If

If Request.QueryString("order") = "" Then

strOrderBy = "id"

Else

strOrderBy = Request.QueryString("order")

End If

' PERCORSO DEL DATABASE

url_DB = "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.mappath("/mdbdatabase/

database.mdb")

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 24 di 161

Set Conn = Server.CreateObject("ADODB.Connection")

conn.Open url_DB

Set RS = Server.CreateObject("ADODB.Recordset")

' FA LA RICHIESTA AL DATABASE

sql = "SELECT * FROM News ORDER BY " & strOrderBy & " DESC;"

RS.Open sql, conn, adOpenKeyset

RS.PageSize = iPageSize

RS.CacheSize = iPageSize

iPageCount = RS.PageCount

If iPageCurrent > iPageCount Then iPageCurrent = iPageCount

If iPageCurrent < 1 Then iPageCurrent = 1

' NESSUNA NEWS INSERITA -> VIENE VISUALIZZATO UN MESSAGGIO CHE INFORMA

CHE NON E' PRESENTE

' NEMMENO UNA NEWS NEL DB

If iPageCount = 0 Then

%><hr>

<p align="center"><b><font size="2" face="Verdana">Nessuna news

presente!</font></b></p>

<hr>

<%

Else

RS.AbsolutePage = iPageCurrent

iRecordsShown = 0

' SE INVECE SONO PRESENTI NEWS

%>

<table border="0" cellpadding="0" cellspacing="0" width="100%">

<%

Do While iRecordsShown < iPageSize And Not RS.EOF

%>

<tr>

<td width="2%"><font face="Verdana" size="2">&gt;</font></td>

<td width="98%"><font face="Verdana" size="2"><a

href="leggi_news.asp?id=<%=RS("id")%>"><b><%=RS("titolo")%></b></a>

di <b><%=RS("autore")%></b> - <%=RS("data")%></font></td>

</tr>

<%

' COMPLETA LA VISUALIZZAZIONE DEI TITOLI DELLE NEWS E CHIUDE LA

CONNESSIONE

' AL DATABASE

iRecordsShown = iRecordsShown + 1

RS.MoveNext

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 25 di 161

Loop

%>

</table>

<%

End If

RS.Close

Set RS = Nothing

Conn.Close

%><center>

<%

' MOSTRA IL NUMERO DELLE PAGINE

' DATO CHE VERRANNO MOSTRATI

' IN QUESTO ESEMPIO 15 NEWS PER PAGINA

For x=1 to iPageCount

%>

<font face="Verdana" size="2">[ <b> <a

href="archivio_news.asp?page=<%=x%>&order=<%=

Server.URLEncode(strOrderBy) %>"><%=x%></a></b> ]</font>

<%

next

%>

</body>

</html>

In questo modo abbiamo finito le pagine per la visualizzazione delle news, passiamo

all’amministrazione!

Creazione pagine di amministrazione news

Passiamo ora alla creazione delle pagine per l’amministratore per la gestione delle

news! Creiamo una cartella “admin” e creiamo adesso per il momento due file (che

andranno inseriti in questa cartella…):

Index.asp (Che identifica l’utente come amministratore)

Gestione_News.asp (Per la gestione delle news)

Ecco il codice della pagina “index.asp”:

<%

' CONTROLLA SE I DATI INSERITI NEI CAMPI DI LOGIN SONO ESATTI

' USERNAME AMMINISTRATORE

username = "admin"

' PASSWORD AMMINISTRATORE

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 26 di 161

password = "admin"

IF Lcase(Request.Form("username")) = Lcase(username) and

Lcase(Request.Form("password")) = Lcase(password) then

' I DATI SONO ESATTI E SI VIENE IDENTIFICATI COME AMMINISTRATORE

' E PORTATI NELLA PAGINA "GESTIONE_NEWS.ASP"

session("amministratore") = true

Response.Redirect "Gestione_News.asp"

End if

%>

<html>

<head>

<title>GESTIONE NEWS</title>

</head>

<body>

<p align="center">&nbsp;</p>

<p align="center"><b><font size="4" face="Verdana">Gestione

News!</font></b></p>

<form method="POST" action="index.asp">

<div align="center">

<center>

<table border="0" cellpadding="0" cellspacing="0" width="39%">

<tr>

<td width="50%"><font face="Verdana" size="2">Username:</font></td>

<td width="50%"><input type="text" name="username" size="20"></td>

</tr>

<tr>

<td width="50%"><font face="Verdana" size="2">Password:</font></td>

<td width="50%"><input type="password" name="password"

size="20"></td>

</tr>

<tr>

<td width="100%" colspan="2" height="5">

</td>

</tr>

<tr>

<td width="100%" colspan="2">

<p align="center"><input type="submit" value="Invia" name="B1"><input

type="reset" value="Reimposta" name="B2"></td>

</tr>

</table>

</center>

</div>

</form>

<p align="center">&nbsp;</p>

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 27 di 161

</body>

</html>

Ecco il codice della pagina “Gestione_News.asp”, verranno visualizzati le ultime 50

news e con un click sarà possibile cancellarle (pagina “Elimina_news.asp”) o

modificarle (pagina “Modifica_news.asp”), inoltre viene inserito un link alla pagina

Aggiungi_News.asp”, per aggiungere una nuova news:

<%

' CONTROLLA SE SI E' IDENTIFICATI

IF session("amministratore")<>true then

Response.Redirect "index.asp"

End IF

%>

<html>

<head>

<title>GESTIONE NEWS</title>

</head>

<body>

<p align="left"><b><font size="4" face="Verdana">&gt; Gestione

News!</font></b></p>

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

<%

' NUMERO DI NEWS PER PAGINA

iPageSize = 50

If Request.QueryString("page") = "" Then

iPageCurrent = 1

Else

iPageCurrent = CInt(Request.QueryString("page"))

End If

If Request.QueryString("order") = "" Then

strOrderBy = "id"

Else

strOrderBy = Request.QueryString("order")

End If

' PERCORSO DEL DATABASE

url_DB = "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.mappath("/mdbdatabase/

database.mdb")

Set Conn = Server.CreateObject("ADODB.Connection")

conn.Open url_DB

Set RS = Server.CreateObject("ADODB.Recordset")

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 28 di 161

' FA LA RICHIESTA AL DATABASE

sql = "SELECT * FROM News ORDER BY " & strOrderBy & " DESC;"

RS.Open sql, conn, adOpenKeyset

RS.PageSize = iPageSize

RS.CacheSize = iPageSize

iPageCount = RS.PageCount

If iPageCurrent > iPageCount Then iPageCurrent = iPageCount

If iPageCurrent < 1 Then iPageCurrent = 1

' NESSUNA NEWS INSERITA -> VIENE VISUALIZZATO UN MESSAGGIO CHE INFORMA

CHE NON E' PRESENTE

' NEMMENO UNA NEWS NEL DB

If iPageCount = 0 Then

%><hr>

<p align="center"><b><font size="2" face="Verdana">Nessuna news

presente!</font></b></p>

<hr>

<%

Else

RS.AbsolutePage = iPageCurrent

iRecordsShown = 0

' SE INVECE SONO PRESENTI NEWS

%>

<table border="0" cellpadding="0" cellspacing="0" width="100%">

<%

' VISUALIZZA I TITOLI DELLE NEWS

Do While iRecordsShown < iPageSize And Not RS.EOF

numero = numero + 1

%>

<tr>

<td width="7%"><font face="Verdana" size="2"><%=numero%>.</font></td>

<td width="172%"><font face="Verdana" size="2"><a

href="Modifica_news.asp?id=<%=RS("id")%>"><b><%=RS("Titolo")%></b></a>

di <b><%=RS("autore")%></b> - <%=RS("data")%></font></td>

<td width="19%"><font face="Verdana" size="2"><a

href="Elimina_news.asp?id=<%=RS("id")%>">Cancella</a></font></td>

</tr>

<%

' COMPLETA LA VISUALIZZAZIONE DEI TITOLI DELLE NEWS E CHIUDE LA

CONNESSIONE

' AL DATABASE

iRecordsShown = iRecordsShown + 1

RS.MoveNext

Loop

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 29 di 161

%>

</table>

<%

End If

RS.Close

Set RS = Nothing

Conn.Close

%><center>

<%

' MOSTRA IL NUMERO DELLE PAGINE

' DATO CHE VERRANNO MOSTRATI

' IN QUESTO ESEMPIO 50 NEWS PER PAGINA

For x=1 to iPageCount

%>

<font face="Verdana" size="2">[ <b> <a

href="Gestione_news.asp?page=<%=x%>&order=<%=

Server.URLEncode(strOrderBy) %>"><%=x%></a></b> ]</font>

<%

next

%>

</center>

<p><b><font face="Verdana" size="2"><a href="Aggiungi_news.asp">Aggiungi

nuova

news</a></font></b></p>

</body>

</html>

Come si nota è lo stesso codice della precedente pagina “archivio_news.asp”,

opportunamente modificata per l’amministrazione.

Ecco il codice della pagina “Elimina_news.asp”, per l’eliminazione delle news:

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

<%

' PERCORSO DEL DATABASE

url_DB = "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.mappath("/mdbdatabase/

database.mdb")

Set Conn = Server.CreateObject("ADODB.Connection")

conn.Open url_DB

Set RecSet = Server.CreateObject("ADODB.Recordset")

SQL = "SELECT * FROM NEWS WHERE ID = " & Request.QueryString("id") &""

RecSet.Open SQL, Conn, adOpenStatic, adLockOptimistic

' CONTROLLA SE LA NEWS E' REALMENTE ESISTENTE

If RecSet.Eof = False Then

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 30 di 161

' LA NEWS E' PRESENTE, LA CANCELLA E AGGIORNA IL DB

RecSet.Delete

RecSet.Update

End IF

RecSet.Close

Conn.Close

Set Conn = Nothing

Set RecSet = Nothing

' PORTA L'AMMINISTRATORE NELLA PAGINA "GESTIONE_NEWS.ASP"

Response.Redirect "Gestione_news.asp"

%>

Vediamo adesso come aggiungere una nuova news, ecco la pagina

Aggiungi_news.asp”:

<%

' CONTROLLA SE SI E' IDENTIFICATI

IF session("amministratore")<>true then

Response.Redirect "index.asp"

End IF

%>

<html>

<head>

<title>GESTIONE NEWS</title>

</head>

<body>

<p><b><font face="Verdana" size="4">&gt; Aggiungi News</font></b></p>

<form method="POST" action="News_DB.asp?tipo=aggiungi">

<table border="0" cellpadding="0" cellspacing="0" width="100%">

<tr>

<td width="19%"><font face="Verdana" size="2">Titolo news:</font></td>

<td width="81%"><font face="Verdana" size="2"><input type="text"

name="titolo" size="20"></font></td>

</tr>

<tr>

<td width="19%"><font face="Verdana" size="2">Contenuto

news:</font></td>

<td width="81%"><textarea rows="7" name="contenuto"

cols="53"></textarea></td>

</tr>

<tr>

<td width="19%"><font face="Verdana" size="2">Autore news:</font></td>

<td width="81%"><font face="Verdana" size="2"><input type="text"

name="autore" size="20"></font></td>

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 31 di 161

</tr>

<tr>

<td width="100%" colspan="2"><font face="Verdana" size="2"><input

type="submit" value="Aggiungi news" name="B1"><input type="reset"

value="Reimposta" name="B2"></font></td>

</tr>

</table>

</form>

<p><a href="Gestione_news.asp"><font face="Verdana" size="2"><b>Torna alla

Gestione delle news</b></font></a></p>

</body>

</html>

Come si nota il modulo porta alla pagina “News_DB.asp”, che verrà utilizzata per

aggiungere ma anche per modificare le news, ecco il suo codice:

<%

' CONTROLLA SE SI E' IDENTIFICATI

IF session("amministratore")<>true then

Response.Redirect "index.asp"

End IF

%>

<html>

<head>

<title>GESTIONE NEWS</title>

</head>

<body>

<p><b><font face="Verdana" size="4">&gt; Gestione News</font></b></p>

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

<%

' PERCORSO DEL DATABASE

url_DB = "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.mappath("/mdbdatabase/

database.mdb")

Set Conn = Server.CreateObject("ADODB.Connection")

conn.Open url_DB

' CONTROLLA SE TUTTI I CAMPI SONO STATI COMPILATI

IF Len(Request("autore")) = 0 or Len(Request("titolo")) = 0 or

Len(Request("contenuto")) = 0 then

' CAMPI NON COMPILATI!

%>

<hr>

<p align="center"><font face="Verdana" size="4"><b>Campi non

compilati!</b></font></p>

<hr>

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 32 di 161

<%

Else

' CAMPI COMPILATI

' RICEVE L'OPERAZIONE DA SVOLGERE (AGGIUNGERE/MODIFICARE NEWS)

operazione = Request.QueryString("tipo")

Set RecSet = Server.CreateObject("ADODB.Recordset")

' IN BASE ALL'OPERAZIONE CREA LA QUERY AL DATABASE

IF operazione = "aggiungi" then

' DEVE AGGIUNGERE LA NEWS

SQL = "SELECT * FROM NEWS"

else

' DEVE MODIFICARE LA NEWS

SQL = "SELECT * FROM NEWS WHERE ID = " & Request.Querystring("id") &""

End IF

RecSet.Open SQL, Conn, adOpenStatic, adLockOptimistic

' OPERAZIONE : AGGIUNGI NEWS

IF operazione = "aggiungi" then

RecSet.Addnew

' SE SI AGGIUNGE LA NEWS INSERISCE LA DATA CORRENTE

RecSet("data") = date()

End IF

RecSet("titolo") = Replace(Request.Form("titolo"), "'", "&#8242;")

RecSet("autore") = Replace(Request.Form("autore"), "'", "&#8242;")

RecSet("contenuto") = Replace(Replace(Request.Form("contenuto"), chr(13),

"<br>"), "'", "&#8242;")

' AGGIORNA E CHIUDE IL DB

RecSet.Update

RecSet.Close

Set RecSet = Nothing

%>

<hr>

<p align="center"><font face="Verdana" size="4"><b>Operazione eseguita

correttamente!</b></font></p>

<hr>

<%

End IF

Conn.Close

Set Conn = Nothing

%>

<p><a href="Gestione_news.asp"><font face="Verdana" size="2"><b>Torna alla

Gestione delle news</b></font></a></p>

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 33 di 161

</body>

</html>

Creiamo adesso la pagina “Modifica_news.asp”, con un modulo per modificare la

news:

<%

' CONTROLLA SE SI E' IDENTIFICATI

IF session("amministratore")<>true then

Response.Redirect "index.asp"

End IF

%>

<html>

<head>

<title>GESTIONE NEWS</title>

</head>

<body>

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

<%

' PERCORSO DEL DATABASE

url_DB = "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.mappath("/mdbdatabase/

database.mdb")

Set Conn = Server.CreateObject("ADODB.Connection")

conn.Open url_DB

Set RecSet = Server.CreateObject("ADODB.Recordset")

' PRELEVA I DATI DELLA NEWS SELEZIONATA

SQL = "SELECT * FROM NEWS WHERE ID = " & Request.QueryString("id") &""

RecSet.Open SQL, Conn, adOpenStatic, adLockOptimistic

' PASSA ALLA PAGINA "NEWS_DB.ASP" INOLTRE L'ID DELLA NEWS SELEZIONATA

%>

<p><b><font face="Verdana" size="4">&gt; Modifica News</font></b></p>

<form method="POST"

action="News_DB.asp?tipo=modifica&id=<%=RecSet("id")%>">

<table border="0" cellpadding="0" cellspacing="0" width="100%">

<tr>

<td width="19%"><font face="Verdana" size="2">Titolo news:</font></td>

<td width="81%"><font face="Verdana" size="2"><input type="text"

name="titolo" size="20" value="<%=RecSet("titolo")%>">

- <b><%=RecSet("data")%></b></font></td>

</tr>

<tr>

<td width="19%"><font face="Verdana" size="2">Contenuto

news:</font></td>

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 34 di 161

<td width="81%"><textarea rows="7" name="contenuto"

cols="53"><%=Replace(RecSet("contenuto"), "<br>", chr(13))%></textarea></td>

</tr>

<tr>

<td width="19%"><font face="Verdana" size="2">Autore news:</font></td>

<td width="81%"><font face="Verdana" size="2"><input type="text"

name="autore" size="20" value="<%=RecSet("autore")%>"></font></td>

</tr>

<tr>

<td width="100%" colspan="2"><font face="Verdana" size="2"><input

type="submit" value="Modifica news" name="B1"><input type="reset"

value="Reimposta" name="B2"></font></td>

</tr>

</table>

</form>

<p><a href="Gestione_news.asp"><font face="Verdana" size="2"><b>Torna alla

Gestione delle news</b></font></a></p>

</body>

</html>

<%

RecSet.Close

Conn.Close

Set Conn = Nothing

%>

Come detto precedentemente tutti i dati del modulo vengono poi passati alla pagina

“News_DB.asp”, che aggiornerà in questo caso i dati della news.

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 35 di 161

Capitolo 3

Segnala sito ad un amico!

Una delle principali forme di sponsorizzazione è il passa parola, vediamo come creare

uno script ASP per permettere ai visitatori del nostro sito di segnalarlo a loro amici...

La sua realizzazione richiede la creazione di due pagine:

Segnala.asp, nella quale appare un modulo con il messaggio che verrà inviato

e che dovrà essere compilato con i dati dell’utente e quelli dell’amico.

Segnala_Invia.asp, che invierà l’e-mail e ringrazierà il nostro utente per la

segnalazione.

Ecco il codice della pagina “Segnala.asp”:

<html>

<head>

<title>SEGNALA SITO</title>

</head>

<body>

<p><b><font face="Verdana" size="4">&gt; Segnala ad un amico</font></b></p>

<form method="POST" action="Segnala_Invia.asp">

<table border="0" cellpadding="0" cellspacing="0" width="100%">

<tr>

<td width="20%" bgcolor="#D3DFE4"><font face="Verdana" size="2">Tua

E-mail:</font></td>

<td width="80%" bgcolor="#D3DFE4"><input type="text" name="mittente"

size="20"></td>

</tr>

<tr>

<td width="20%" bgcolor="#D3DFE4"><font face="Verdana" size="2">E-mail

amico:</font></td>

<td width="80%" bgcolor="#D3DFE4"><input type="text" name="destinatario"

size="20"></td>

</tr>

<tr>

<td width="20%" bgcolor="#D3DFE4"><font face="Verdana"

size="2">Testo:</font></td>

<td width="80%" bgcolor="#D3DFE4"><textarea rows="7" name="testo"

cols="43">IL MIO SITO è un portale creato grazie ai consigli sull'ASP di Salvatore

Aranzulla

http://www.sito.it</textarea></td>

</tr>

<tr>

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 36 di 161

<td width="100%" colspan="2" bgcolor="#D3DFE4"><input type="submit"

value="Segnala sito!" name="B1"></td>

</tr>

</table>

</form>

<p>&nbsp;</p>

</body>

</html>

Si tratta di semplice codice HTML, il tutto creerà un modulo con vari campi (Tua Email,

Email Amico e Testo del messaggio):

L’unica cosa da modificare in questa pagina è il messaggio che verrà inviato all’amico

del visitatore: inseriamo una descrizione del nostro sito e il nostro indirizzo,

modificando le seguenti righe:

<textarea rows="7" name="testo" cols="43">IL MIO SITO è un portale creato grazie

ai consigli sull'ASP di Salvatore Aranzulla

http://www.sito.it</textarea>

In qualsiasi modo il visitatore potrà modificare il messaggio, ad esempio aggiungendo

altre note, links o altro.

Il modulo viene inviato alla pagina “Segnala_Invia.asp”, ecco il suo codice:

<html>

<head>

<title>SEGNALA SITO</title>

</head>

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 37 di 161

<body>

<%

' CONTROLLA PRIMA SE TUTTI I CAMPI SONO STATI COMPILATI CORRETTAMENTE

IF Instr(Request.Form("mittente"), "@") = 0 or Instr(Request.Form("mittente"), ".")

= 0 or Instr(Request.Form("destinatario"), "@") = 0 or

Instr(Request.Form("destinatario"), "@") = 0 or Request.Form("testo") = "" then

' NON TUTTI I CAMPI SONO STATI COMPILATI

%>

<hr>

<p align="center"><font face="Verdana" size="4"><b>Compila tutti i

campi!</b></font></p>

<hr>

<%

' ALTRIMENTI

ELSE

' SI IMPOSTA PER INVIARE L'EMAIL DI SEGNALAZIONE:

' UN OGGETTO PER L'EMAIL DI SEGNALAZIONE

oggetto = "Segnalazione sito"

Set Email = CreateObject("CDONTS.NewMail")

' MITTENTE

Email.From = Request.Form("mittente")

' DESTINATARIO

Email.To = Request.Form("destinatario")

' OGGETTO

Email.Subject = oggetto

' FORMATO EMAIL (FORMATO: TESTO)

Email.MailFormat = 1

' TESTO EMAIL

Email.Body = Request.Form("testo")

Email.Send

Set Email = Nothing

%>

<hr>

<p align="center"><font face="Verdana" size="4"><b>Grazie per averci segnalato ai

tuoi amici!</b></font></p>

<hr>

<%

END IF

%>

</body>

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 38 di 161

</html>

Basterà quindi inserire nelle pagine del nostro sito il link alla pagina “Segnala.asp

per far segnalare ai nostri visitatori il nostro sito ai loro amici!

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 39 di 161

Capitolo 4

I sondaggi

Può essere alcune volte necessario fare dei sondaggi ai nostri utenti, per scoprire le

loro abitudini e le loro preferenze, vediamo come gestire il tutto in ASP!

La creazione dello script per il sondaggio si può dividere in:

Creazione del database

Creazione pagina per inserimento/visualizzazione dei risultati dei sondaggi

Pagine per gestire il sondaggio

Creazione del database

Per la creazione del database ho usato il famoso Microsoft Access, versione 2000

(presente nel pacchetto Microsoft Office).

Avviamo Access e selezioniamo la creazione di un database vuoto:

Quindi diamo un nome al nostro database, che conterrà i voti degli utenti, e

salviamolo col nome di “database.mdb”.

Creiamo quindi una tabella in visualizzazione struttura:

... con il seguente campo, che conterrà il voto dell’utente:

Voto – Tipo campo: Testo

Chiudiamo la creazione della tabella (con la X in alto a destra della creazione della

tabella) e, rispondendo affermativamente alle domande che ci verranno poste,

salviamola col nome di “Sondaggio”. Verrà creata in automatico da Access anche la

colonna “ID”, un contatore, se si vuole si può anche lasciare, comunque non verrà

utilizzata.

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 40 di 161

Creazione pagina per inserimento/visualizzazione dei risultati dei

sondaggi

Iniziamo innanzitutto stabilendo che il nostro sondaggio multiplo avrà un massimo di

cinque risposte. Creiamo quindi il modulo attraverso il quale sarà possibile dare la

propria preferenza:

Ecco il suo codice html:

<form method="POST" action="Sondaggio_Vai.asp">

<table border="0" cellpadding="0" cellspacing="0" width="24%">

<tr>

<td width="100%" bgcolor="#C3D3DB" colspan="2">

<p align="center"><b><font face="Verdana"

size="2">Sondaggio</font></b></td>

</tr>

<tr>

<td width="100%" colspan="2" bgcolor="#EDF1F3"><font face="Verdana"

size="2">Ti

piace programmare in ASP?</font></td>

</tr>

<tr>

<td width="11%" bgcolor="#EDF1F3"><font face="Verdana" size="1"><input

type="radio" value="primo" name="voto"></font></td>

<td width="89%" bgcolor="#EDF1F3"><font face="Verdana" size="1">Si,

moltissimo</font></td>

</tr>

<tr>

<td width="11%" bgcolor="#EDF1F3"><font face="Verdana" size="1"><input

type="radio" value="secondo" name="voto"></font></td>

<td width="89%" bgcolor="#EDF1F3"><font face="Verdana" size="1">Si, per

lavoro</font></td>

</tr>

<tr>

<td width="11%" bgcolor="#EDF1F3"><font face="Verdana" size="1"><input

type="radio" value="terzo" name="voto"></font></td>

<td width="89%" bgcolor="#EDF1F3"><font face="Verdana"

size="1">No</font></td>

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 41 di 161

</tr>

<tr>

<td width="11%" bgcolor="#EDF1F3"><font face="Verdana" size="1"><input

type="radio" value="quarto" name="voto"></font></td>

<td width="89%" bgcolor="#EDF1F3"><font face="Verdana" size="1">No, ma

sono obbligato</font></td>

</tr>

<tr>

<td width="11%" bgcolor="#EDF1F3"><font face="Verdana" size="1"><input

type="radio" value="quinto" name="voto"></font></td>

<td width="89%" bgcolor="#EDF1F3"><font face="Verdana" size="1">Odio

l'ASP</font></td>

</tr>

<tr>

<td width="100%" colspan="2" bgcolor="#EDF1F3"><font face="Verdana"

size="1"><input type="submit" value="Vota!" name="B1"></font></td>

</tr>

<tr>

<td width="100%" colspan="2" bgcolor="#EDF1F3">

<p align="center"><font face="Verdana" size="1"><a

href="Sondaggio_Vai.asp">Voti

sondaggio</a></font></td>

</tr>

</table>

</form>

Come si vede i dati, vengono inviati da questo modulo alla pagina

Sondaggio_Vai.asp”, che aggiungerà il risultato al database e visualizzerà i risultati

complessivi del sondaggio. Viene creato un “pulsante di opzione”, che in base alla

risposta scelta ha un valore differente (primo, secondo, terzo, quarto e quinto).

Infine è presente un link sempre alla pagina “Sondaggio_Vai.asp”, per la

visualizzazione diretta dei risultati.

Passiamo adesso alla pagina “Sondaggio_Vai.asp”. Ecco il suo codice:

<html>

<head>

<title>SONDAGGI</title>

</head>

<body>

<!-- #INCLUDE FILE="adovbs.inc" -->

<%

' PERCORSO DEL DATABASE

url_DB = "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.mappath("/mdbdatabase/

database.mdb")

Set Conn = Server.CreateObject("ADODB.Connection")

conn.Open url_DB

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 42 di 161

' APRE LA CONNESSIONE AL DATABASE PER AGGIUNGERE IL VOTO

' (SE SI STA VOTANDO)

IF Request.Form("voto") <> "" Then

Set RecSet = Server.CreateObject("ADODB.Recordset")

SQL = "SELECT * FROM Sondaggio"

RecSet.Open SQL, Conn, adOpenStatic, adLockOptimistic

' AGGIUNGE IL VOTO AL DATABASE

RecSet.Addnew

RecSet("voto") = Request.Form("voto")

' AGGIORNA IL DATABASE E CHIUDE LA CONNESSIONE

RecSet.Update

RecSet.Close

End IF

' APRE LA CONNESSIONE AL DATABASE PER CONTROLLARE SE CI SONO VOTI

Set RecSet = Server.CreateObject("ADODB.Recordset")

SQL = "SELECT Count(*) FROM Sondaggio"

RecSet.Open SQL, Conn, adOpenStatic, adLockOptimistic

' NON CI SONO VOTI

IF RecSet(0) = 0 then

RecSet.Close

%>

<p><b><font face="Verdana" size="4">Nessun voto presente!</font></b></p>

<%

' CI SONO VOTI:

Else

%>

<p><b><font face="Verdana" size="4">Ecco i risultati del sondaggio &quot;Ti piace

programmare in ASP?&quot;:</font></b></p>

<table border="0" cellpadding="2" width="93%">

<%

' PRELEVIAMO IL NUMERO DEI VOTI ALLA PRIMA RISPOSTA

Set RecSet = Server.CreateObject("ADODB.Recordset")

SQL = "SELECT COUNT(*) FROM Sondaggio where voto = 'primo'"

RecSet.Open SQL, Conn, adOpenStatic, adLockOptimistic

' RESTITUISCE IL NUMERO DEI VOTI

numero_voti_primo = RecSet(0)

RecSet.Close

' PRELEVIAMO IL NUMERO DEI VOTI ALLA SECONDA RISPOSTA

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 43 di 161

Set RecSet = Server.CreateObject("ADODB.Recordset")

SQL = "SELECT COUNT(*) FROM Sondaggio where voto = 'secondo'"

RecSet.Open SQL, Conn, adOpenStatic, adLockOptimistic

' RESTITUISCE IL NUMERO DEI VOTI

numero_voti_secondo = RecSet(0)

RecSet.Close

' PRELEVIAMO IL NUMERO DEI VOTI ALLA TERZA RISPOSTA

Set RecSet = Server.CreateObject("ADODB.Recordset")

SQL = "SELECT COUNT(*) FROM Sondaggio where voto = 'terzo'"

RecSet.Open SQL, Conn, adOpenStatic, adLockOptimistic

' RESTITUISCE IL NUMERO DEI VOTI

numero_voti_terzo = RecSet(0)

RecSet.Close

' PRELEVIAMO IL NUMERO DEI VOTI ALLA QUARTA RISPOSTA

Set RecSet = Server.CreateObject("ADODB.Recordset")

SQL = "SELECT COUNT(*) FROM Sondaggio where voto = 'quarto'"

RecSet.Open SQL, Conn, adOpenStatic, adLockOptimistic

' RESTITUISCE IL NUMERO DEI VOTI

numero_voti_quarto = RecSet(0)

RecSet.Close

' PRELEVIAMO IL NUMERO DEI VOTI ALLA QUINTA RISPOSTA

Set RecSet = Server.CreateObject("ADODB.Recordset")

SQL = "SELECT COUNT(*) FROM Sondaggio where voto = 'quinto'"

RecSet.Open SQL, Conn, adOpenStatic, adLockOptimistic

' RESTITUISCE IL NUMERO DEI VOTI

numero_voti_quinto = RecSet(0)

RecSet.Close

' SOMMA VOTI

numero_voti_totale = int(numero_voti_primo + numero_voti_secondo +

numero_voti_terzo + numero_voti_quarto + numero_voti_quinto)

' ADESSO CHE ABBIAMO IL NUMERO DEI VOTI PER OGNI RISPOSTA

' CREIAMO LA PERCENTUALE DEI VOTI

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 44 di 161

percentuale_primo = FormatPercent((numero_voti_primo / numero_voti_totale), 1)

percentuale_secondo = FormatPercent((numero_voti_secondo / numero_voti_totale),

1)

percentuale_terzo = FormatPercent((numero_voti_terzo / numero_voti_totale), 1)

percentuale_quarto = FormatPercent((numero_voti_quarto / numero_voti_totale), 1)

percentuale_quinto = FormatPercent((numero_voti_quinto / numero_voti_totale), 1)

' TROVA LA PARTE INTERA DELLA PERCENTUALE CHE CORRISPONDERA' AL NUMERO

DI PIXEL

' DELLA BARRA DEL GRAFICO (L'IMMAGINE) E LA MOLTIPLICA PER DUE (ALTRIMENTI

LE BARRE SARANNO MOLTO PICCOLE)

barra_primo = (Mid(percentuale_primo, 1, 2))*2

barra_secondo = (Mid(percentuale_secondo, 1, 2))*2

barra_terzo = (Mid(percentuale_terzo, 1, 2))*2

barra_quarto = (Mid(percentuale_quarto, 1, 2))*2

barra_quinto = (Mid(percentuale_quinto, 1, 2))*2

' VISUALIZZA QUINDI I GRAFICI E LE PERCENTUALI

%>

<tr>

<td width="24%" bgcolor="#E3EBEE"><font face="Verdana" size="2">Si,

moltissimo</font></td>

<td width="76%" bgcolor="#E3EBEE"><font face="Verdana" size="2"><img

border="0" src="images/01.jpg" width="<%=barra_primo%>" height="10">

- <%=percentuale_primo%>%</font></td>

</tr>

<tr>

<td width="24%" bgcolor="#E3EBEE"><font face="Verdana" size="2">Si, per

lavoro</font></td>

<td width="76%" bgcolor="#E3EBEE"><font face="Verdana" size="2"><img

border="0" src="images/02.jpg" width="<%=barra_secondo%>" height="10"> -

<%=percentuale_secondo%>%</font></td>

</tr>

<tr>

<td width="24%" bgcolor="#E3EBEE"><font face="Verdana"

size="2">No</font></td>

<td width="76%" bgcolor="#E3EBEE"><font face="Verdana" size="2"><img

border="0" src="images/03.jpg" width="<%=barra_terzo%>" height="10"> -

<%=percentuale_terzo%>%</font></td>

</tr>

<tr>

<td width="24%" bgcolor="#E3EBEE"><font face="Verdana" size="2">No, ma

sono obbligato</font></td>

<td width="76%" bgcolor="#E3EBEE"><font face="Verdana" size="2"><img

border="0" src="images/04.jpg" width="<%=barra_quarto%>" height="10"> -

<%=percentuale_quarto%>%</font></td>

</tr>

<tr>

<td width="24%" bgcolor="#E3EBEE"><font face="Verdana" size="2">Odio

l'ASP</font></td>

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 45 di 161

<td width="76%" bgcolor="#E3EBEE"><font face="Verdana" size="2"><img

border="0" src="images/02.jpg" width="<%=barra_quinto%>" height="10"> -

<%=percentuale_quinto%>%</font></td>

</tr>

<tr>

<td width="24%" bgcolor="#C3D3DB"><font face="Verdana"

size="2"><b>Numero voti totali:</b></font></td>

<td width="76%" bgcolor="#C3D3DB"><font face="Verdana"

size="2"><b><%=numero_voti_totale%></b></font></td>

</tr>

</table>

<%

End IF

%>

<p>&nbsp;</p>

</body>

</html>

<%

Conn.Close

Set Conn = Nothing

Set RecSet = Nothing

%>

Da notare è la creazione dei grafici a barra, per la loro realizzazione ci servono cinque

immagini (che noi abbiamo chiamato 01.jpg, 02.jpg, 03.jpg, 04.jpg e 05.jpg) che

abbiamo inserito dentro la cartella “images”. Queste immagini dovranno avere le

seguenti caratteristiche:

Altezza di 10 pixel

Larghezza di 10 pixel (anche se poi la larghezza verrà data dallo script in base

alla percentuale e al numero di risposte)

Colore differente

E’ possibile comunque scaricate il tutto dal mio sito http://mirabilweb.altervista.org

Pagine per gestire il sondaggio

Può capitare di fare sondaggi molto spesso e quindi di dover cancellare, dopo aver

preso nota, i risultati del precedente sondaggio dal nostro database, può risultare

un’operazione molto lunga e noiosa se eseguita a mano, ma perché non creare uno

script che cancelli i precedenti dati? Vediamo come!

Creiamo una cartella “admin” e creiamo adesso due file (che verranno inseriti in

questa cartella):

Index.asp (Che identifica l’utente come amministratore)

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 46 di 161

Gestione_Sondaggio.asp (Per eliminare i dati del sondaggio dal database)

Ecco il codice della pagina “index.asp”:

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 47 di 161

<%

' CONTROLLA SE I DATI INSERITI SONO ESATTI

' USERNAME AMMINISTRATORE

username = "admin"

' PASSWORD AMMINISTRATORE

password = "admin"

IF Lcase(Request.Form("username")) = Lcase(username) and

Lcase(Request.Form("password")) = Lcase(password) then

' I DATI SONO ESATTI E SI VIENE IDENTIFICATI COME AMMINISTRATORE

' E PORTATI NELLA PAGINA "GESTIONE_SONDAGGIO.ASP"

session("amministratore") = true

Response.Redirect "Gestione_Sondaggio.asp"

End if

%>

<html>

<head>

<title>GESTIONE SONDAGGIO</title>

</head>

<body>

<p align="center">&nbsp;</p>

<p align="center"><b><font size="4" face="Verdana">Gestione

Sondaggio!</font></b></p>

<form method="POST" action="index.asp">

<div align="center">

<center>

<table border="0" cellpadding="0" cellspacing="0" width="39%">

<tr>

<td width="50%"><font face="Verdana" size="2">Username:</font></td>

<td width="50%"><input type="text" name="username" size="20"></td>

</tr>

<tr>

<td width="50%"><font face="Verdana" size="2">Password:</font></td>

<td width="50%"><input type="password" name="password"

size="20"></td>

</tr>

<tr>

<td width="100%" colspan="2" height="5">

</td>

</tr>

<tr>

<td width="100%" colspan="2">

<p align="center"><input type="submit" value="Invia" name="B1"><input

type="reset" value="Reimposta" name="B2"></td>

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 48 di 161

</tr>

</table>

</center>

</div>

</form>

<p align="center">&nbsp;</p>

</body>

</html>

Ecco invece il codice della pagina “Gestione_Sondaggio.asp”:

<%

' CONTROLLA SE SI E' IDENTIFICATI

IF session("amministratore")<>true then

Response.Redirect "index.asp"

End IF

%>

<html>

<head>

<title>GESTIONE NEWSLETTER</title>

</head>

<body><p><b><font size="4" face="Verdana">&gt; Cancella dati

sondaggio!</font></b></p>

<!-- #INCLUDE FILE="../adovbs.inc" -->

<%

' LEGGE QUELLO CHE DEVE FARE

operazione = Request.QueryString("operazione")

' PERCORSO DEL DATABASE

url_DB = "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.mappath("/mdbdatabase/

database.mdb")

Set Conn = Server.CreateObject("ADODB.Connection")

conn.Open url_DB

' OPERAZIONE: CANCELLA I DATI DEL SONDAGGIO CORRENTE

IF operazione = "cancella" then

Set RecSet = Server.CreateObject("ADODB.Recordset")

SQL = "SELECT * FROM Sondaggio"

RecSet.Open SQL, Conn, adOpenStatic, adLockOptimistic

' CONTROLLA SE ESISTONO DEI DATI NEL DATABASE

If RecSet.Eof = False Then

' CANCELLA TUTTI I DATI

Do Until RecSet.Eof

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 49 di 161

RecSet.Delete

RecSet.Update

RecSet.Movenext

Loop

End IF

' CHIUDE LA CONNESSIONE

RecSet.Close

Conn.Close

' TI PORTA NELLA PAGINA "GESTIONE_SONDAGGIO?OPERAZIONE=OK"

' DOVE VERRA' VISUALIZZATO UN MESSAGGIO DI OPERAZIONE

' COMPIUTA CORRETTAMENTE

Response.Redirect "Gestione_Sondaggio.asp?operazione=ok"

ElseIF operazione = "" then

%>

<hr>

<p align="center"><font face="Verdana" size="3">Sei sicuro di voler cancellare i

dati del sondaggio corrente?<br>

<b><a href="Gestione_Sondaggio.asp?operazione=cancella">Si,

cancellali!</a></b></font></p>

<hr>

<%

ElseIF operazione = "ok" then

%>

<hr>

<p align="center"><font face="Verdana" size="3">Operazione eseguita

correttamente!</font></p>

<hr>

<%

End IF

Conn.Close

Set Conn = Nothing

Set RecSet = Nothing

%>

<p align="center">&nbsp;</p>

</body>

</html>

Con questa pagina, appunto, si potranno far cancellare tutti i dati del sondaggio

corrente (visibili dalla pagina “Sondaggio_Vai.asp”, precedentemente creata) con un

semplice click!

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 50 di 161

Capitolo 5

Sito multi lingua

Può capitare di dover creare un sito in più lingue (ad esempio italiano e inglese) e

quindi di dover creare il doppio delle pagine (pagine sito in italiano e pagine sito in

inglese), ma... perché non affidarci al nostro ASP per dimezzare le pagine e creare allo

stesso tempo un sito multi lingua? Utilizzeremo in questa lezione le Session.

Creiamo innanzitutto una pagina che ci permetta di scegliere la lingua del sito:

Si tratta di una semplice pagina con due link (Italiano:

lingua.asp?lingua=italiano”; Inglese: “lingua.asp?lingua=inglese”), che

puntano alla pagina “lingua.asp

Ecco il codice della pagina “lingua.asp” che imposterà la lingua alle pagine:

<%

' RICHIEDE LA LINGUA DALLA QUERYSTRING

lingua = Lcase(Request.QueryString("lingua"))

' IMPOSTA LA SESSION COL VALORE PASSATO

session("lingua") = lingua

' PORTA L'UTENTE NELL'HOME PAGE DEL SITO IN ASP (AD ESEMPIO INDEX.ASP)

Response.Redirect "index.asp"

%>

In questo modo abbiamo creato le basi del nostro sistema multi lingua, adesso

vediamo come creare le pagine multi lingua.

Una pagina multi lingua dovrà essere strutturata così:

<html>

<head>

<title>SITO MULTI LINGUA</title>

</head>

<body>

<%

' SI RICHEDE LA LINGUA

lingua = session("lingua")

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 51 di 161

' SE LA LINGUA DELLA SESSION

' E' UGUALE A ITALIANO O E' VUOTA

' VIENE VISUALIZZATA LA PARTE IN ITALIANO

IF lingua = "italiano" or lingua = "" then

%>

SITO ITALIANO

<%

' ... ALTRIMENTI LA PARTE IN INGLESE

elseIF lingua = "inglese" then

%>

WEB SITE ENGLISH

<%

' SE LA LINGUA SELEZIONATA NON E' PRESENTE

' IN QUESTA PAGINA, PORTA L'UTENTE IN

' QUESTA STESSA PAGINA, PERO' CON LA SESSION

' "LINGUA" IMPOSTATA CON IL VALORE DI "italiano"

Else

session("lingua") = "italiano"

Response.Redirect "pagina_due_lingue.asp"

End IF

%>

</body>

</html>

In questo modo in base al valore della session, verrà visualizzata la parte inglese o la

parte in italiano della pagina.

Se si deve invece tradurre la pagina in più lingue si può preferire:

<html>

<head>

<title>SITO MULTI LINGUA</title>

</head>

<body>

<%

' SI RICHEDE LA LINGUA

lingua = session("lingua")

' SE LA LINGUA E’ VUOTA IMPOSTA L’ITALIANO

IF lingua = "" then

lingua = "italiano"

end if

' ----------------------------------

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 52 di 161

Select Case lingua

Case "italiano":

%>

SITO ITALIANO

<%

Case "inglese":

%>

WEB SITE ENGLISH

<%

Case "francese":

%>

SITO FRANCESE

<%

Case "tedesco":

%>

Sito tedesco

<%

Case else:

' Se la lingua che si è scelto non

' esiste in questa pagina, porta l’utente

' nella stessa pagina, con la session

' "lingua" impostata su "italiano"

session("lingua") = "italiano"

Response.Redirect "pagina_piu_lingue.asp"

End Select

' ----------------------------------

%>

</body>

</html>

In questo caso abbiamo, quindi, utilizzato un costrutto “Case Select” e non molte

condizioni concatenate fra loro. Il funzionamento del costrutto “Case Select” è molto

semplice:

La variabile da esaminare viene passata tramite Select Case lingua

Poi è come se venissero fatte delle condizioni:

o Se il valore della variabile è uguale a italiano (Case "italiano") visualizza il

sito italiano ecc…

o Se la lingua (Case else) selezionata non è presente si viene riportati nella

stessa pagina, con la session “lingua” impostata a “italiano”

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 53 di 161

Capitolo 6

Rotazione banner

Può capitare di dover creare un sistema di rotazione banner per il nostro sito.

Vediamo come realizzarlo in ASP utilizzando il componente AdRotator.

La realizzazione di questo script si può dividere in:

Creazione file con i dati dei banner

Creazione pagina per la visualizzazione dei banner

Creazione pagina per portare l’utente sul sito del banner

Creazione file con i dati dei banner

Per eseguire la rotazione dei banner utilizzando il componente AdRotator, occorre

dapprima creare un file di testo con i dati dei banner, che poi verranno prelevati a

rotazione dall’oggetto AdRotator (che si collegherà a questo file).

Il file di testo che conterà i dati dei banner dovrà avere la seguente struttura:

REDIRECT ads.asp

WIDTH LARGHEZZA BANNER

HEIGHT ALTEZZA BANNER

BORDER DIMENSIONE BORDO BANNER

*

URL IMMAGINE BANNER 1

URL SITO BANNER 1

TESTO CHE APPARIRA' AL PASSAGGIO DEL MOUSE – BANNER 1

PERCENTUALE DI APPARIZIONE DEL BANNER DEL BANNER 1

URL IMMAGINE BANNER 2

URL SITO BANNER 2

TESTO CHE APPARIRA' AL PASSAGGIO DEL MOUSE – BANNER 2

PERCENTUALE DI APPARIZIONE DEL BANNER 2

Questo file noi lo abbiamo chiamato “banner.txt”. Di seguito un file “banner.txt” di

esempio:

REDIRECT ads.asp

WIDTH 468

HEIGHT 60

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 54 di 161

BORDER 0

*

http://localhost/banner/banner1.gif

http://www.sito1.it

Visitaci!:D

50

http://localhost/banner/banner2.gif

http://www.sito2.it

Il sito sui PC!

50

I banner, come si nota fin dall’inizio del file “banner.txt”, hanno la lunghezza di 468

pixel, la larghezza di 60 pixel e un bordo di 0 pixel.

Due sono i banner inseriti a rotazione, questi hanno una probabilità di apparizione pari

al 50 % delle visualizzazioni (numero 50). La probabilità di apparizione è molto

importante ad esempio se si vogliono sponsorizzare due prodotti in uno stesso sito,

ma dare maggiore importanza alla sponsorizzazione di uno rispetto all’altro. In questo

caso aumenteremo la probabilità di apparizione al prodotto che vogliamo venga

sponsorizzato di più.

In poche parole quindi la prima parte del file (quella prima dell’asterisco) serve a

definire i dati dei banner (altezza, larghezza e dimensione bordo). Nella seconda parte

invece sono presenti i dati dei banner (url immagine banner, sito banner, testo che

appare posizionandosi sopra il banner, probabilità di apparizione).

Creazione pagina per la visualizzazione dei banner

Creiamo adesso una pagina che chiameremo “banner.asp” con il seguente codice:

<%

Set AdRotator = Server.CreateObject("MSWC.AdRotator")

' PRELEVA UN BANNER CASUALMENTE DAL FILE BANNER.TXT (DANDO MAGGIORE

IMPORTANZA AI BANNER CON UNA MAGGIORE PROBABILITA' DI VISUALIZZAZIONE)

' E LO VISUALIZZA

Response.Write(AdRotator.GetAdvertisement("banner.txt"))

%>

Questa pagina non fa altro che creare l’oggetto AdRotator, collegarsi al file dei banner

(banner.txt) e visualizzare un banner.

Per visualizzare nelle pagine del nostro sito i banner, nel punto in cui vogliamo farli

visualizzare, basterà includere questa pagina, inserendo semplicemente:

<!-- #include file = "banner.asp" -->

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 55 di 161

Pagine per portare l’utente sul sito del banner

Lo script non è ancora completo, manca infatti la pagina che porta l’utente nel sito del

banner. AdRotator, infatti, crea un link, in questo caso, alla pagina “ads.asp” (pagina

specificata nel primo rigo del nostro file banner.txt REDIRECT ads.asp”) di questo

tipo:

http://nostro sito/ads.asp?url=http://sito del banner&image=immagine del banner

Dobbiamo quindi creare la pagina “ads.asp”, che preleverà l’url passato e porterà

l’utente nel sito del banner. Ecco il suo codice:

<%

' PRELEVA L'URL DEL SITO PASSATO DALLA QUERYSTRING "URL"

url = Request.QueryString("url")

' SE LA QUERYSTRING "URL" CONTIENE UN VALORE (L'URL) PORTA L'UTENTE NEL

SITO DEL BANNER

IF url <> "" Then

Response.Redirect(url)

End IF

%>

Una possibile integrazione di questo script è con lo script per la visualizzazione di un

frame sopra i siti esterni al nostro (un altro tutorial di questo libro), in questo caso si

modificherà la riga:

Response.Redirect(url)

Con:

Response.Redirect("http://nostro sito/sito_esterno.asp?url=" & url)

In questo modo sopra il sito del banner verrà visualizzato un frame, che ricorda

all’utente che sta visitando un sito esterno al nostro.

Questo è comunque un sistema di rotazione banner molto semplice, che consiglio di

usare solo in siti in cui non si deve tenere conto delle statistiche dei banner

(visualizzazioni, click e altro), per i quali esistono soluzioni migliori.

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 56 di 161

Capitolo 7

Creare una newsletter

Vediamo in questa lezione come creare una newsletter per ricordare ai nostri utenti le

ultime novità inserite nel nostro sito.

La sua costruzione si può dividere in:

Creazione del database

Pagine per la registrazione/eliminazione dalla newsletter

Pagine per l’amministratore del sito

Creazione Database

Per la creazione del database ho usato il famoso Microsoft Access, versione 2000

(presente nel pacchetto Microsoft Office).

Avviamo Access e selezioniamo la creazione di un database vuoto:

Quindi diamo un nome al nostro database, che conterrà le e-mail degli utenti, e

salviamolo col nome di “database.mdb”.

Creiamo quindi una tabella in visualizzazione struttura:

... con il seguente campo, che conterrà le e-mail degli utenti:

Email – Tipo campo: Testo

Chiudiamo la creazione della tabella (con la X in alto a destra della creazione della

tabella) e, rispondendo affermativamente alle domande che ci verranno poste,

salviamola col nome di “Email_Newsletter”. Verrà creata in automatico da Access

anche la colonna “ID”, un contatore, se si vuole si può anche lasciare, comunque non

verrà utilizzata.

Pagine per la registrazione/eliminazione dalla newsletter

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 57 di 161

Per la registrazione/cancellazione degli utenti si deve creare un modulo da inserire

nelle varie pagine del nostro sito, con un campo di testo in cui inserire la propria email

e sotto due scelte: iscrivimi/cancellami. Ecco il nostro codice HTML:

<form method="POST" action="Newsletter_Vai.asp">

<p><font face="Verdana" size="2">E-mail: <input type="text" name="email"

size="20"><br>

<input type="radio" value="iscrivimi" name="operazione" checked>Iscrivimi<input

type="radio" value="cancellami" name="operazione">Cancellami

<input type="submit" value="Invia" name="B1"></font></p>

</form>

I dati verranno inviati alla pagina “Newsletter_Vai.asp”, ecco il suo codice:

<html>

<head>

<title>NEWSLETTER</title>

</head>

<body>

<!-- #INCLUDE FILE="adovbs.inc" -->

<%

' VERIFICA CHE IL CAMPO EMAIL SIA STATO COMPILATO CORRETTAMENTE

IF Len(Request.Form("email")) > 0 then

IF Instr(Request.Form("email"), ".") = 0 or Instr(Request.Form("email"), "@") = 0

Then

' EMAIL NON COMPILATA CORRETTAMENTE

%>

<hr>

<p align="center"><b><font size="4" face="Verdana">E-mail non

corretta!</font></b></p>

<hr>

<%

Else

' EMAIL COMPILATA CORRETTAMENTE E SI PROCEDE...

email = Replace(Request.Form("email"), "'", "''")

' PERCORSO DEL DATABASE

url_DB = "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.mappath("/mdbdatabase/

database.mdb")

Set Conn = Server.CreateObject("ADODB.Connection")

conn.Open url_DB

' APRE LA CONNESSIONE AL DATABASE

Set RecSet = Server.CreateObject("ADODB.Recordset")

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 58 di 161

SQL = "SELECT * FROM Email_Newsletter where email = '"& email &"'"

RecSet.Open SQL, Conn, adOpenStatic, adLockOptimistic

' LEGGE L'OPERAZIONE DA SVOLGERE (AGGIUNGERE O ELIMINARE)

operazione = Request.Form("operazione")

' SE ESISTE:

IF RecSet.Eof then

' IN BASE ALL'OPERAZIONE:

' AGGIUNGE L'EMAIL AL DB

IF operazione = "iscrivimi" then

RecSet.Addnew

RecSet("email") = email

RecSet.Update

%>

<hr>

<p align="center"><b><font size="4" face="Verdana">Grazie per esserti

registrato!</font></b></p>

<hr>

<%

ElseIF operazione = "cancellami" then

' EMAIL INESISTENTE! NON PUO' CANCELLARE NULLA, QUINDI:

%>

<hr>

<p align="center"><b><font size="4" face="Verdana">E-mail non presente nel

nostro database!</font></b></p>

<hr>

<%

end if

' SE ESISTE:

Else

' EMAIL GIA' REGISTRATA!

IF operazione = "iscrivimi" then

%>

<hr>

<p align="center"><b><font size="4" face="Verdana">E-mail già

registrata!</font></b></p>

<hr>

<%

End IF

' CANCELLA L'UTENTE

IF operazione = "cancellami" then

RecSet.Delete

RecSet.Update

%>

<hr>

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 59 di 161

<p align="center"><b><font size="4" face="Verdana">E-mail cancellata

correttamente! <br>Grazie per essere stato con noi!</font></b></p>

<hr>

<%

End IF

End IF

RecSet.Close

Conn.Close

End IF

' EMAIL NON COMPILATA!

Else

%>

<hr>

<p align="center"><b><font size="4" face="Verdana">E-mail non

corretta!</font></b></p>

<hr>

<%

End IF

%>

</body>

</html>

Il codice è tutto commentato, come si nota viene incluso il file "adovbs.inc",

scaricabile dal mio sito http://mirabilweb.altervista.org!

Pagine per l’amministratore del sito

Passiamo ora alla creazione delle pagine per l’amministratore, per inviare agli utenti la

nostra newsletter! Creiamo una cartella “admin” e creiamo adesso due file (che

dovranno essere inseriti in questa cartella):

Index.asp (Con la schermata per identificarsi come amministratore)

Gestione_Newsletter.asp (Per l’invio dei messaggi)

Ecco il codice di “index.asp”:

<%

' CONTROLLA SE I DATI DI LOGIN INSERITI SONO CORRETTI

' USERNAME AMMINISTRATORE

username = "admin"

' PASSWORD AMMINISTRATORE

password = "admin"

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 60 di 161

IF Lcase(Request.Form("username")) = Lcase(username) and

Lcase(Request.Form("password")) = Lcase(password) then

' I DATI SONO ESATTI E SI VIENE IDENTIFICATI COME AMMINISTRATORE

' E PORTATI NELLA PAGINA "GESTIONE_NEWSLETTER.ASP"

session("amministratore") = true

Response.Redirect "Gestione_Newsletter.asp"

End if

%>

<html>

<head>

<title>GESTIONE NEWSLETTER</title>

</head>

<body>

<p align="center">&nbsp;</p>

<p align="center"><b><font size="4" face="Verdana">Gestione

Newsletter!</font></b></p>

<form method="POST" action="index.asp">

<div align="center">

<center>

<table border="0" cellpadding="0" cellspacing="0" width="39%">

<tr>

<td width="50%"><font face="Verdana" size="2">Username:</font></td>

<td width="50%"><input type="text" name="username" size="20"></td>

</tr>

<tr>

<td width="50%"><font face="Verdana" size="2">Password:</font></td>

<td width="50%"><input type="password" name="password"

size="20"></td>

</tr>

<tr>

<td width="100%" colspan="2" height="5">

</td>

</tr>

<tr>

<td width="100%" colspan="2">

<p align="center"><input type="submit" value="Invia" name="B1"><input

type="reset" value="Reimposta" name="B2"></td>

</tr>

</table>

</center>

</div>

</form>

<p align="center">&nbsp;</p>

</body>

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 61 di 161

</html>

Ecco il codice della pagina “Gestione_Newsletter.asp”, per l’invio dei messaggi agli

iscritti della nostra newsletter:

<%

' CONTROLLA SE SI E' IDENTIFICATI

IF session("amministratore")<>true then

Response.Redirect "index.asp"

End IF

%>

<html>

<head>

<title>GESTIONE NEWSLETTER</title>

</head>

<body><p><b><font size="4" face="Verdana">&gt; Invia

newsletter!</font></b></p>

<!-- #INCLUDE FILE="../adovbs.inc" -->

<%

' LEGGE QUELLO CHE DEVE FARE

operazione = Request.QueryString("tipo")

' PERCORSO DEL DATABASE

url_DB = "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.mappath("/mdbdatabase/

database.mdb")

Set Conn = Server.CreateObject("ADODB.Connection")

conn.Open url_DB

' OPERAZIONE = INVIA IL MESSAGGIO DI NEWSLETTER

IF operazione = "invia" then

' VERIFICA CHE I CAMPI SIANO STATI COMPILATI

IF Request("oggetto") <> "" and Request("testo") <> "" then

' APRE LA CONNESSIONE AL DATABASE E PRELEVA LE EMAIL DELLA NEWSLETTER

Set RecSet = Server.CreateObject("ADODB.Recordset")

SQL = "SELECT * FROM Email_Newsletter"

RecSet.Open SQL, Conn, adOpenStatic, adLockOptimistic

IF not RecSet.Eof then

' INDIRIZZO EMAIL NOSTRO

mittente = "email@sito.com"

Do until Recset.eof

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 62 di 161

' PRELEVA L'EMAIL DELL'UTENTE DAL NOSTRO DATABASE

destinatario = RecSet("email")

' PRELEVA IL TESTO DEL MESSAGGIO DA INVIARE

testo = Request.Form("testo")

' PRELEVA L'OGGETTO DEL MESSAGGIO DA INVIARE

oggetto = Request.Form("oggetto")

' INVIA IL MESSAGGIO

Set email = CreateObject("CDONTS.NewMail")

email.From = mittente

email.To = destinatario

email.Subject = oggetto

' FORMATO EMAIL

email.BodyFormat = 1

email.MailFormat = 1

email.Body = testo

' INVIA L'EMAIL E..

email.Send

Set email = nothing

' PASSA AVANTI...

RecSet.Movenext

loop

End If

RecSet.Close

Conn.close

Set RecSet = Nothing

Set Conn = Nothing

' VISUALIZZA UN MESSAGGIO DI CONFERMA:

%>

<hr>

<p align="center"><font face="Verdana" size="4"><b>Messaggio inviati

correttamente!</b></font></p>

<hr>

<%

Else

%>

<hr>

<p align="center"><font face="Verdana" size="4"><b>Compila tutti i

campi!</b></font></p>

<hr>

<%

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 63 di 161

End IF

Else

%>

<form method="POST" action="Gestione_Newsletter.asp?tipo=invia">

<table border="0" cellpadding="0" cellspacing="0" width="100%">

<tr>

<td width="26%"><font face="Verdana" size="2">Oggetto

messaggio:</font></td>

<td width="74%"><font face="Verdana" size="2"><input type="text"

name="oggetto" size="20"></font></td>

</tr>

<tr>

<td width="26%"><font face="Verdana" size="2">Testo

messaggio:</font></td>

<td width="74%"><font face="Verdana" size="2"><textarea rows="6"

name="testo" cols="67"></textarea></font></td>

</tr>

<tr>

<td width="26%"><font face="Verdana" size="2">Numero iscritti:</font></td>

<%

' CONTA GLI ISCRITTI ALLA NEWSLETTER

Set RecSet = Server.CreateObject("ADODB.Recordset")

SQL = "SELECT Count(*) FROM Email_Newsletter"

RecSet.Open SQL, Conn, adOpenStatic, adLockOptimistic

' CONTA GLI ISCRITTI

IF not RecSet.Eof then

Iscritti = RecSet(0)

Else

Iscritti = 0

End if

%>

<td width="74%"><b><font face="Verdana"

size="2"><%=Iscritti%></font></b></td>

<%

RecSet.Close

%>

</tr>

<tr>

<td width="100%" colspan="2"><input type="submit" value="Invia Newsletter!"

name="B1"><input type="reset" value="Reimposta" name="B2"></td>

</tr>

</table>

</form>

<p>&nbsp;</p>

<%

End IF

Conn.Close

Set Conn = Nothing

Set RecSet = Nothing

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 64 di 161

%>

</body>

</html>

Per l’invio dei messaggi viene utilizzato l’oggetto CDONTS, presente nella maggior

parte dei server che supportano l’ASP. I messaggi così inviati possono essere solo in

formato testo (il più preferito), sarà quindi impossibile utilizzare il codice HTML.

Possiamo però modificare questo script affinché invii messaggi sia in formato testuale

che HTML. Vediamo come!

Trasformiamo le righe:

' FORMATO EMAIL

email.BodyFormat = 1

email.MailFormat = 1

In:

' FORMATO EMAIL

email.BodyFormat = Request.Form("formato")

email.MailFormat = Request.Form("formato")

E poi, prima della riga che mostra il numero degli iscritti, quindi di:

<tr>

<td width="26%"><font face="Verdana" size="2">Numero iscritti:</font></td>

<%

' CONTA GLI ISCRITTI ALLA NEWSLETTER

Set RecSet = Server.CreateObject("ADODB.Recordset")

SQL = "SELECT Count(*) FROM Email_Newsletter"

RecSet.Open SQL, Conn, adOpenStatic, adLockOptimistic

' CONTA GLI ISCRITTI

IF not RecSet.Eof then

Iscritti = RecSet(0)

Else

Iscritti = 0

End if

%>

<td width="74%"><b><font face="Verdana"

size="2"><%=Iscritti%></font></b></td>

<%

RecSet.Close

%>

</tr>

... Inseriamo:

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 65 di 161

<tr>

<td width="26%"><font face="Verdana" size="2">Formato email:</

font></td>

<td width="74%"><select size="1" name="formato">

<option selected value="1">Testo</option>

<option value="0">HTML</option>

</select></td>

</tr>

In questo modo, selezionando il formato delle e-mail dall’amministrazione, si potranno

inviare sia messaggi in formato HTML, che messaggi in formato testuale.

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 66 di 161

Capitolo 8

Frame sopra i siti esterni

Tenere l’utente più allungo in un sito web è l’obiettivo che si pongono la maggior parte

dei webmaster, analizziamo un trucco per fare ciò: inseriamo nei siti esterni al nostro,

un frame (una “barra”) che ricorda all’utente che sta visitando un sito esterno al

nostro e che gli consenta di ritornare al nostro sito con un semplice click!

Ecco un esempio di frame sopra i siti esterni al nostro:

Per la realizzazione di questo script ASP occorrono due pagine:

La pagina superiore, quindi la barra del nostro sito (il frame)

In questa parte consiglio di inserire il logo del sito web, un link che punta al

nostro sito e un banner

La pagina dove verrà visualizzata la nostra barra (sopra) e il sito

esterno (sotto)

Realizzata la pagina che farà da frame superiore (la barra del nostro sito), salviamola

con il nome di “superiore.asp”.

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 67 di 161

In questa pagina andrà anche inserito un link che permetta di eliminare il frame,

puntando il visitatore direttamente al sito web esterno.

Nel codice HTML della pagina della parte superiore inseriamo, per fare apparire questo

link (Elimina frame):

<a href="<%=Request.QueryString("url")%>" target="_top">Elimina

frame</a>

Adesso creiamo una pagina ASP vuota e inseriamo al suo interno:

<%

IF Request.QueryString("url")="" then

' Se non è stato passato nessun indirizzo porta l’utente nel sito "http://il nostro sito"

Response.Redirect "http://il nostro sito"

end if

%>

<html>

<head>

<title>Mio Sito Web</title>

</head>

<frameset framespacing="1" border="0" rows="21%,*" frameborder="0">

<frame name="superiore"

src="superiore.asp?url=<%=Request.QueryString("url")%>" scrolling="auto"

noresize target="_self">

<frame name="inferiore" src="<%=Request.QueryString("url")%>">

<noframes>

<body>

<p>La pagina corrente utilizza i frame. Questa caratteristica non è

supportata dal browser in uso.</p>

</body>

</noframes>

</frameset>

</html>

Come si nota viene creata un pagina con due frame, nella parte superiore viene

inserita la pagina “superiore.asp” (il frame creato precedentemente) al quale viene

passato l’url del sito esterno, nella parte inferiore vi sarà invece il sito esterno, il cui

url viene prelevato sempre dalla querystring “url”.

Salviamo questa pagina con il nome di “sito_esterno.asp”. Adesso il nostro script

ASP è completo, vediamo come usarlo!

Nei prossimi link esterni al nostro sito ricordatevi di creare un link di questo tipo:

http://vostro sito web/sito_esterno.asp?url= indirizzo del sito esterno

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 68 di 161

Ad esempio:

http://www.sitoweb.com/sito_esterno.asp?url=http://www.hardwaremax.it

Il funzionamento dello script ASP è abbastanza semplice, viene passato l’url del sito

esterno alla pagina “sito_esterno.asp” tramite la querystring “url”, da qui l’url

viene passato alla pagina “superiore.asp”, per creare il link per eliminare la barra

superiore, e utilizzato per visualizzare il sito web esterno nel frame inferiore.

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 69 di 161

Capitolo 9

Utenti connessi

In questo articolo creeremo un piccolo contatore per visualizzare il numero di Utenti

connessi contemporaneamente sulle pagine del nostro sito e vedremo come

visualizzare questi dati anche in una semplice pagina HTML!

Per creare questo contatore è necessario utilizzare il file “Global.asa”. Esso risulta

utile per condividere fra gli Utenti connessi ad un sito, determinate attività, in questo

caso, ad esempio, per condividere il numero di Utenti connessi al sito.

Questo file dovrà essere posizionato nella cartella principale del sito (detta root). Se il

nostro sito ad esempio è http://mirabilweb.altervista.org, il global.asa dovrà essere

posizionato in http://mirabilweb.altervista.org e non in una sotto cartella di questo.

Ecco il codice del global.asa per conteggiare gli Utenti connessi al proprio sito:

<SCRIPT LANGUAGE="VBSCRIPT" RUNAT=SERVER>

Sub Application_OnStart()

Application("Utenti_n") = 0

End Sub

Sub Session_OnStart()

Application.Lock

Application("Utenti_n") = Application("Utenti_n") + 1

Application.Unlock

End Sub

Sub Session_OnEnd()

Application.Lock

Application("Utenti_n") = Application("Utenti_n") – 1

Application.Unlock

End Sub

</SCRIPT>

A questo punto, per visualizzare il numero di Utenti connessi al nostro sito, in una

pagina dinamica (pagina ASP), basta semplicemente inserire:

Utenti connessi: <b><%=Application("Utenti_n")%></b>

Per realizzare il contatore abbiamo utilizzato tre funzioni di Global.asa:

Application_OnStart() – imposta a zero il numero degli Utenti connessi, quando non

c’è nessun utente online

Session_OnStart() – si è collegato un utente e aumenta di uno il numero degli

Utenti connessi

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 70 di 161

Session_OnEnd() – si è disconnesso dal sito un utente, decrementa di uno il numero

degli Utenti connessi.

Vediamo ora come far visualizzare in una pagina HTML il numero degli Utenti connessi

al sito.

Come sappiamo, ovviamente, NON si può utilizzare del codice ASP in una semplice

pagina statica. Come fare quindi? Creeremo una pagina ASP che genererà del codice

javascript in base agli Utenti connessi e questa pagina visualizzerà il numero degli

Utenti connessi nelle nostre pagine HTML.

Creiamo quindi una pagina ASP che chiameremo “Utenti_online_html.asp”. Ecco il

codice di questa pagina:

document.write("Utenti connessi: <b><%=Application("Utenti_n")%>")

Si tratta di semplice codice JavaScript, che interagisce con ASP per prelevare il

numero di Utenti connessi.

Document.write è l’oggetto di javascript che utilizzeremo per scrivere a video “Utenti

connessi: numero Utenti connessi

Nelle nostre pagine HTML, inseriremo invece semplicemente:

<SCRIPT LANGUAGE='JavaScript' SRC='http://SITO

WEB/Utenti_online_html.asp'></SCRIPT>

Verrà così richiamto il codice javascript generato dinamicamente nella pagina

Utenti_online_html.asp” e tramite l’oggetto document e la sua funzione write

verrà visualizzato il numero di Utenti connessi al nostro sito. Semplice, no?

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 71 di 161

Capitolo 10

Tema uguale per le pagine del nostro sito

Può capitare di dover ripetere la grafica di un sito web, realizzato in ASP, nelle varie

pagine che lo compongono e di dover aggiornare in seguito l’impostazione delle

pagine e la grafica: un lavoraccio per chi ha realizzato le singole pagine, inserendo in

ogni pagina la grafica del sito!

Ritrovandomi in questa situazione ho pensato ad una soluzione: usare le Sub Routine,

vediamo come e cosa sono!

1. Creiamo innanzitutto una pagina di templates (di modello) per le altre,

lasciando uno spazio in cui far apparire i contenuti delle varie pagine

2. Nel punto in cui si deve far apparire il contenuto delle varie pagine

inseriamo:

<%MostraPagina()%>

In questo modo richiameremo la sub routine che imposteremo nelle altre pagine del

nostro sito e verranno visualizzati al posto di MostraPagina() il contenuto delle varie

pagine!

3. Salvate adesso la pagina con il nome di “tema.asp

4. Le nuove pagine del nostro sito dovranno essere impostate così:

<% Sub MostraPagina() %>

Contenuto della pagina

<% End Sub %>

<!-- #include file="tema.asp" -->

In questo modo imposteremo dentro la sub routine MostraPagina il contenuto html

delle varie pagine, che verrà poi mostrato a video dalla pagina “tema.asp”, inclusa

nella varie pagine future del nostro sito!

Basterà quindi in seguito modificare l’impostazione di tema.asp per cambiare anche

tutte le altre pagine!

Perfezioniamo il tutto

In questo modo abbiamo realizzato lo script ASP per mantenere la grafica uniforme

nelle varie pagine del nostro sito, si può perfezionare il tutto facendo anche cambiare

il titolo alle pagine che in questo caso avrebbero il titolo della pagina “tema.asp”.

Inseriamo fra i tag HTML <title> e </title>:

<%=Titolo%>

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 72 di 161

E all’inizio di questa pagina (tema.asp):

<%

IF titolo = "" then

titolo = "Inserisci qua un titolo in caso che la pagina non abbia un titolo"

end if

%>

Le prossime pagine dovranno invece essere organizzate in questo modo:

<%

titolo = "TITOLO DELLA PAGINA"

Sub MostraPagina() %>

Contenuto della pagina

<% End Sub %>

<!-- #include file=”tema.asp” -->

Per capire meglio...

Lo schema di una pagina modello del nostro sito potrebbe essere:

Nella parte superiore inserire logo, link principali e banner del sito, nelle parti

laterali è possibile invece inserire altri link e altri informazioni varie, nella parte

bassa il copyright del sito ed eventuali contatti, nella parte centrale invece vengono

inseriti i contenuti delle pagine del nostro sito ed è qua che verrà inserito

<%MostraPagina()%>

Lo script modificherà quindi solo la parte centrale del nostro file modello con il

contenuto delle varie pagine, mentre le altre parti resteranno così come sono. In

questo modo basterà appunto modificare il file di tema per modificare la grafica di

tutte le pagine. Geniale come idea, o no?

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 73 di 161

Capitolo 11

Più pagine in una

Può capitare di dover creare un sito con molte pagine, ma... perché non utilizzare

l’ASP per creare tutto il sito in un’unica pagina (o almeno buona parte di esso)?

Per creare più pagine in una, si può ricorrere al costrutto If – Then – Else, cioè

utilizzare le condizioni, vediamo come!

Ecco come è strutturata una pagina che contiene più pagine:

<%

pagina = Lcase(Request.QueryString("pagina"))

IF pagina = "" then

pagina="home"

end if

%>

<html>

<head>

<title>Mio Sito</title>

</head>

<body>

<%

If pagina = "home" then

%>

Pagina di home!

<%

ElseIf pagina = "chisiamo" then

%>

Pagina chi siamo!

<%

elseIF pagina = "azienda" then

%>

Pagina azienda!

<%

Else

Response.Redirect "pagina_con_piu_pagine.asp?pagina=home"

end if

%>

</body>

</html>

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 74 di 161

Come si vede, all’inizio della pagina, viene richiesto il valore passato alla pagina,

tramite la query string “pagina”, che contiene il nome della pagina da visualizzare.

Se non è stato passato alcun valore, la variabile “pagina” assumerà il valore di

home”.

Subito dopo il tag html <body> vi sono le condizioni per visualizzare le varie pagine in

base al valore che ha assunto la variabile “pagina”.

Se il valore è uguale ad “home” visualizza l’home page, se è uguale a “chisiamo”

visualizza la pagina chi siamo e via dicendo. Se il nome della pagina passato non

esiste si viene riportati nella stessa pagina, però viene passato il valore “home

(?pagina=home), così verrà visualizzata l’home page del sito.

Per inserire nuove pagine:

<%

... altre pagine

ElseIf pagina = "altro nome della pagina" then

%>

Contenuto pagina!

<%

... altre pagine o fine (End IF)

%>

Per visualizzare le pagine basta richiamare “la pagina con più pagine” passando il

nome della pagina da visualizzare, ad esempio

http://sito/pagina_con_piu_pagine.asp?pagina=chisiamo

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 75 di 161

Capitolo 12

Sezioni riservate

Può essere necessario in un sito web proteggere determinate sezioni e farle

visualizzarle solo agli utenti registrati o solo ad esempio agli amministratori del sito.

Vediamo come fare il tutto in ASP!

Due sono i problemi (... e le relative soluzioni) che analizzeremo:

proteggere una sezione ad un solo utente

proteggere una sezione a più utenti

Problema 1: Proteggere una sezione ad un solo utente

La soluzione a questo problema è molto semplice: infatti è quella che abbiamo

utilizzato fino ad ora per riservare l’amministrazione degli script del libro solo agli

amministratori.

Vediamo come fare!

Creiamo innanzitutto una pagina in cui inserire username e password per identificarsi:

<html>

<head>

<title>SEZIONI RISERVATE</title>

</head>

<body>

<p>&nbsp;</p>

<p align="center"><font face="Verdana" size="3"><b>Sezioni Riservate - Solo un

utente</b></font></p>

<form method="POST" action="verifica.asp">

<div align="center">

<center>

<table border="0" width="51%" cellspacing="0" cellpadding="0">

<tr>

<td width="34%"><font face="Verdana" size="2">Username:</font></td>

<td width="66%"><font face="Verdana" size="2"><input type="text"

name="username" size="20"></font></td>

</tr>

<tr>

<td width="34%"><font face="Verdana" size="2">Password:</font></td>

<td width="66%"><font face="Verdana" size="2"><input type="password"

name="password" size="20"></font></td>

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 76 di 161

</tr>

<tr>

<td width="100%" colspan="2">

<p align="center"><input type="submit" value="Invia" name="B1"><input

type="reset" value="Reimposta" name="B2"></td>

</tr>

</table>

</center>

</div>

</form>

</body>

</html>

Come si nota il modulo (con due campi: username, in cui inserire l’username

dell’utente, e password, in cui inserire la password) punta alla pagina “verifica.asp”,

in cui avverrà il controllo dei dati inseriti e l’eventuale identificazione.

Ecco il codice della pagina “verifica.asp”:

<%

' USERNAME DELL'UTENTE DELLA SEZIONE RISERVATA

Username = "admin"

' PASSWORD DELL'UTENTE DELLA SEZIONE RISERVATA

Password = "admin"

' VIENE FATTO UN CONTROLLO FRA I DATI PRECEDENTEMENE INSERITI E QUELLI

' CHE ABBIAMO MESSO QUI SOPRA

IF Lcase(Request("username")) = Lcase(username) and Lcase(Request("password"))

= Lcase(password) then

' DATI ESATTI...

' VIENE IMPOSTATA LA SESSION "IDENTIFICATO" CON IL VALORE DI TRUE

' E SI VIENE PORTATI NELLA PAGINA PROTETTA

' (CHE NOI ABBIAMO CHIAMATO "PROTETTA.ASP")

Session("Identificato") = True

' UTENTE ESATTO

' PORTA L’UTENTE NELLA PAGINA RISERVATA A LUI

' (PROTETTA.ASP)

Response.Redirect "protetta.asp"

Else

' ALTRIMENTI (DATI NON CORRETTI)

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 77 di 161

' SI VIENE PORTATI NELLA PRECEDENTE PAGINA

' DI LOGIN (CHE NOI ABBIAMO CHIAMATO "LOGIN_UNO.ASP")

Response.Redirect "login_uno.asp"

End IF

%>

Vediamo ora come creare le nostre pagine riservate per questo utente!

Dobbiamo noi inserire all’inizio delle nostre pagine protette (ovviamente, con

estensione .ASP), semplicemente queste righe, che fanno un controllo per vedere se

l’utente, che sta cercando di aprire la pagina, è identificato oppure meno:

<%

' VIENE FATTO UN CONTROLLO:

' SE LA SESSION "IDENTIFICATO" E' DIVERSA DA TRUE (NON IDENTIFICATO)

' SI VIENE PORTATI NELLA PAGINA DI LOGIN

IF Session("Identificato") <> True then

' NON LOGGATO

Response.Redirect "login_uno.asp"

End IF

%>

Quindi ad esempio una pagina protetta sarà:

<%

IF Session("Identificato") <> True then

Response.Redirect "login_uno.asp"

End IF

%>

<html>

<head>

<title>Sezioni Riservate</title>

</head>

<body>

<p align="center"><b><font size="3" face="Verdana">Pagina

protetta!</font></b></p>

</body>

</html>

Problema 2: Proteggere una sezione a più utenti

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 78 di 161

Vediamo come creare invece ora un sistema per far registrare gli utenti del nostro sito

e farli accedere a sezioni a loro riservate.

La creazione dello script si articolerà in:

Creazione DataBase (DB)

Creazione pagine per la registrazione (e la sua attivazione)

Creazione pagine per l’invio di password smarrite

Creazione pagine per l’identificazione

Esempio di sezione riservata

Modifica dati utenti

Creazione parte amministrativa per la gestione di tutto lo script

Creazione DataBase (DB)

Per la creazione del database ho usato il famoso Microsoft Access, versione 2000

(presente nel pacchetto Microsoft Office).

Avviamo Access e selezioniamo la creazione di un database vuoto:

Quindi diamo un nome al nostro database, che conterrà i dati degli utenti e salviamolo

col nome di “database.mdb”.

Creiamo quindi una tabella in visualizzazione struttura:

... con i seguenti campi:

Id – Tipo Campo: Contatore

Username - Tipo Campo: Testo

Password - Tipo Campo: Testo

Email - Tipo Campo: Testo

Attivo – Tipo Campo: Numerico

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 79 di 161

Chiudiamo la creazione della tabella (con la X in alto a destra della creazione della

tabella) e, rispondendo affermativamente alle domande che ci verranno poste,

salviamola col nome di “Utenti”.

Creazione pagine per la registrazione

Prima di tutto creiamo una pagina con tutte le opzioni dello script (Registrazione,

Login, Invio password smarrita). Abbiamo chiamato questa pagina

sezioni_riservate.asp:

<html>

<head>

<title>SEZIONI RISERVATE</title>

</head>

<body>

<p>&nbsp;</p>

<p align="center"><font face="Verdana" size="3"><b>Sezioni

Riservate</b></font></p>

<ul>

<li>

<p align="left"><b><font size="2" face="Verdana"><a

href="registrati1.asp">Registrati</a></font></b></li>

<li>

<p align="left"><b><font size="2" face="Verdana"><a

href="login.asp">Login</a></font></b></li>

<li>

<p align="left"><b><font size="2" face="Verdana"><a

href="pwd_persa1.asp">Password

persa...</a></font></b></li>

</ul>

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 80 di 161

</body>

</html>

Come si nota ci sono diversi link (registrati1.asp, che conterrà la pagina con un

modulo per l’inserimento dei dati per registrarsi, login.asp, una pagina con un

modulo in cui inserire il proprio username e password per accedere alle pagine

riservate, e pwd_persa1.asp, per richiedere la propria password persa), andiamo a

creare tutte queste pagine!

La pagina “registrati1.asp”, conterrà semplicemente un modulo in cui inserire i dati

per registrarsi, che punterà alla pagina “registrati2.asp”:

<html>

<head>

<title>SEZIONI RISERVATE</title>

</head>

<body>

<p>&nbsp;</p>

<p align="center"><font face="Verdana" size="3"><b>Sezioni Riservate -

Registrati</b></font></p>

<form method="POST" action="registrati2.asp">

<div align="center">

<center>

<table border="0" width="76%" cellspacing="0" cellpadding="0">

<tr>

<td width="20%"><font face="Verdana" size="2">Username:</font></td>

<td width="80%"><input type="text" name="username" size="20"></td>

</tr>

<tr>

<td width="20%"><font face="Verdana" size="2">Password:</font></td>

<td width="80%"><input type="text" name="password" size="20"></td>

</tr>

<tr>

<td width="20%"><font face="Verdana" size="2">E-mail:</font></td>

<td width="80%"><input type="text" name="email" size="20"></td>

</tr>

<tr>

<td width="100%" colspan="2">

<p align="center"><input type="submit" value="Invia" name="B1"><input

type="reset" value="Reimposta" name="B2"></p></td>

</tr>

</table>

</center>

</div>

</form>

<p align="left">&nbsp;</p>

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 81 di 161

</body>

</html>

Ecco il codice della pagina che riceve i dati (registrati2.asp):

<html>

<head>

<title>SEZIONI RISERVATE</title>

</head>

<body>

<p>&nbsp;</p>

<p align="center"><font face="Verdana" size="3"><b>Sezioni Riservate -

Registrati</b></font></p>

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

<%

' VENGONO SOSTITUITI GLI APICI (') CON DUE APICI ('')

' PER EVITARE IL PROBLEMA "SQL INJECTION"

username = Replace(Request.Form("username"), "'", "''")

password = Replace(Request.Form("password"), "'", "''")

email = Request.Form("email")

' CONTROLLA INNANZITUTTO SE TUTTI I CAMPI SONO STATI COMPILATI

' CORRETTAMENTE

IF username <> "" and password <> "" and Instr(email, "@") > 0 and Instr(email,

".") > 0 then

' CAMPI COMPILATI CORRETTAMENTE

' PERCORSO DEL DATABASE

url_DB = "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.mappath("/mdbdatabase/

database.mdb")

Set Conn = Server.CreateObject("ADODB.Connection")

conn.Open url_DB

Set RecSet = Server.CreateObject("ADODB.Recordset")

SQL = "SELECT * FROM Utenti where username = '" & username &"'"

RecSet.Open SQL, Conn, adOpenStatic, adLockOptimistic

' CONTROLLA SE L'USERNAME INSERITO E' GIA' STATO USATO

IF Not RecSet.Eof Then

' USERNAME GIA' USATO

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 82 di 161

' IMPOSTA LA VARIABILE "USATO" SU TRUE

' (IN MODO DA POTER FAR DOPO UN CONTROLLO IF...)

usato = True

Else

' ALTRIMENTI ... USERNAME NON USATO

' IMPOSTA LA VARIABILE "USATO" SU FALSE

usato = False

End IF

' Chiude la connessione al DB

RecSet.Close

Set RecSet = Nothing

' FA LA CONDIZIONE PER VERIFICARE SE L'USERNAME

' IMMESSO E' GIA' STATO USATO...

IF usato = True then

' USERNAME GIA' USATO.

%>

<hr>

<p align="center"><b><font face="Verdana" size="2">Username inserito già in

uso!</font></b></p>

<hr>

<%

Else

' NICK NON USATO...

' PROCEDE ALLA SUA REGISTRAZIONE...

Set RecSet = Server.CreateObject("ADODB.Recordset")

SQL = "SELECT * FROM Utenti Order By ID Desc"

RecSet.Open SQL, Conn, adOpenStatic, adLockOptimistic

RecSet.Addnew

RecSet("username") = username

RecSet("password") = password

RecSet("email") = email

' INSERISCE NEL DB NEL CAMPO "ATTIVO" IL VALORE 0

' CHE INDICA CHE LA REGISTRAZIONE NON E' STATA ANCORA ATTIVATA,

' INFATTI, DOPO AVER IMMESSO I DATI NEL DB, VERRA' INVIATA ALL'UTENTE

' UNA EMAIL (TRAMITE L'OGGETTO CDONTS) CON UN LINK CHE PUNTA ALLA PAGINA

' "ATTIVA.ASP", PER ATTIVARE L'ACCOUNT.

' SENZA L’ATTIVAZIONE NON E' POSSIBILE

' ACCEDERE ALLE SEZIONI RISERVATE DEL NOSTRO SITO...

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 83 di 161

'

' NELLA PAGINA "ATTIVA.ASP" VERRA' POI TRASFORMATO LO ZERO (0)

' IN UNO (1) E SARA' POSSIBILE QUINDI ACCEDERE ALLE SEZIONI RISERVATE

' DEL NOSTRO SITO.

'

' ABBIAMO INSERITO QUESTO SISTEMA DI CONTROLLO

' PER VERIFICARE CHE I DATI INSERITI SIANO CORRETTI

RecSet("attivo") = 0

' CHIUDE LA CONNESSIONE AL DB

RecSet.Update

RecSet.Close

Set RecSet = Nothing

' PRELEVA L'ID DELL'UTENTE APPENA INSERITO:

Set RecSet = Server.CreateObject("ADODB.Recordset")

SQL = "SELECT ID FROM Utenti Where username = '" & username & "' and password

= '" & password &"'"

RecSet.Open SQL, Conn, adOpenStatic, adLockOptimistic

ID = RecSet("ID")

RecSet.Close

Set RecSet = Nothing

Conn.Close

Set Conn = Nothing

' INVIA L'EMAIL ALL'UTENTE PER ATTIVARE L'ACCOUNT

' (COME SI NOTA VIENE FATTO UN LINK DI QUESTO TIPO:

' HTTP://WWW.SITOMIO.IT/ATTIVA.ASP?ID=ID PRECEDENTEMENTE PRESO DAL DB)

mittente = "mia_email@miosito.it"

testo = "Caro utente," & chr(13)

testo = testo & "per attivare la registrazione al nostro sito, fai click sul link qui sotto"

& chr(13)

testo = testo & "http://www.sitomio.it/attiva.asp?ID=" & id &"" & chr(13) & chr(13)

testo = testo & "Lo staff di Mio sito!" & chr(13)

testo = testo & "http://www.sitomio.it"

emaila = email

Set email = CreateObject("CDONTS.NewMail")

email.From = mittente

email.To = emaila

email.Subject = "[MIO SITO] ATTIVA LA REGISTRAZIONE!"

email.Body = testo

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 84 di 161

email.Send

Set email = nothing

%>

<hr>

<p align="center"><b><font face="Verdana" size="2">Ti è stata inviata una email

per confermare la registrazione!</font></b></p>

<hr>

<%

End IF

Else

' DATI NON COMPILATI CORRETTAMENTE

%>

<hr>

<p align="center"><b><font face="Verdana" size="2">Compila tutti i dati

correttamente!</font></b></p>

<hr>

<%

End IF

%>

</body>

</html>

Provvediamo ora a creare la pagina “attiva.asp” che, come scritto fra i commenti del

precedente listato, serve per attivare la registrazione:

<html>

<head>

<title>SEZIONI RISERVATE</title>

</head>

<body>

<p>&nbsp;</p>

<p align="center"><font face="Verdana" size="3"><b>Sezioni Riservate -

Registrati</b></font></p>

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

<%

' PRELEVA L'ID PASSATO TRAMITE LA QUERY STRING (ATTIVA.ASP?ID=XX)

ID = Request.QueryString("ID")

' CONTROLLA INNANZITUTTO SE E' STATO PASSATO UN VALORE E SE QUESTO E' UN

NUMERO

' (SERVE PROPRIO A QUESTO LA FUNZIONE "ISNUMERIC")

IF ID <> "" and IsNumeric(ID) then

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 85 di 161

' TUTTO OK...

' PERCORSO DEL DATABASE

url_DB = "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.mappath("/mdbdatabase/

database.mdb")

Set Conn = Server.CreateObject("ADODB.Connection")

conn.Open url_DB

Set RecSet = Server.CreateObject("ADODB.Recordset")

SQL = "SELECT * FROM Utenti where ID = " & ID &" and attivo = 0"

RecSet.Open SQL, Conn, adOpenStatic, adLockOptimistic

' CONTROLLA SE L'UTENTE ESISTE REALMENTE

IF Not RecSet.Eof Then

' UTENTE ESISTENTE

' MODIFICA IL VALORE DI ATTIVO DA 0 A 1

' E IMPOSTA LA VARIAIBILE "ATTIVATO" SU TRUE

RecSet("attivo") = 1

Attivato = True

RecSet.Update

Else

' ALTRIMENTI ... UTENTE NON ESISTENTE

' IMPOSTA LA VARIAIBILE "ATTIVATO" SU FALSE

Attivato = False

End IF

' Chiude la connessione al DB

RecSet.Close

Set RecSet = Nothing

Conn.Close

Set Conn = Nothing

' FA LA CONDIZIONE PER VERIFICARE SE L'ATTIVAZIONE E'

' AVVENUTA O MENO

IF Attivato = True then

' ATTIVAZIONE AVVENUTA CORRETTAMENTE

%>

<hr>

<p align="center"><b><font face="Verdana" size="2">Attivazione avvenuta

correttamente! Da ora puoi accedere alle sezioni riservate agli utenti

iscritti!</font></b></p>

<hr>

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 86 di 161

<%

Else

' L'ATTIVAZIONE ERA GIA' STATA FATTA (.. O L'ID PASSATO NON E' CORRETTO...)

%>

<hr>

<p align="center"><b><font face="Verdana" size="2">Registrazione inesistente o

già attivata!</font></b></p>

<hr>

<%

End IF

Else

' DATI NON CORRETTI

%>

<hr>

<p align="center"><b><font face="Verdana" size="2">Errore! Attivazione

registrazione fallita!</font></b></p>

<hr>

<%

End IF

%>

</body>

</html>

Creazione pagine per l’invio di password smarrite

Prima di passare alla creazione delle schermate di login, provvediamo a creare il

sistema per l’invio della password smarrita.

Questa parte sarà composta da due pagine:

Pwd_persa1.asp, con un modulo in cui inserire l’username dell’utente di cui si

vuole ricordare la password

Pwd_persa2.asp, che provvederà ad inviare la password dell’utente

all’indirizzo email specificato nella registrazione

Ecco il codice della pagina “pwd_persa1.asp”, si tratta di un modulo in cui inserire

l’username dell’utente di cui si vuole re-inviata la password via email, il modulo passa

i dati alla pagina “pwd_persa2.asp”:

<html>

<head>

<title>SEZIONI RISERVATE</title>

</head>

<body>

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 87 di 161

<p>&nbsp;</p>

<p align="center"><b><font face="Verdana" size="3">Sezioni Riservate - Password

Persa</font></b></p>

<form method="POST" action="pwd_persa2.asp">

<div align="center">

<center>

<table border="0" width="61%" cellspacing="0" cellpadding="0">

<tr>

<td width="50%"><font face="Verdana" size="2">Username

dell'utente:</font></td>

<td width="50%"><input type="text" name="username" size="20"></td>

</tr>

<tr>

<td width="100%" colspan="2">

<p align="center"><input type="submit" value="Invia password"

name="B1"><input type="reset" value="Reimposta" name="B2"></p></td>

</tr>

</table>

</center>

</div>

</form>

<p align="left">&nbsp;</p>

</body>

</html>

Ecco invece il codice della pagina che riceve i dati, “pwd_persa2.asp”:

<html>

<head>

<title>SEZIONI RISERVATE</title>

</head>

<body>

<p>&nbsp;</p>

<p align="center"><b><font face="Verdana" size="3">Sezioni Riservate - Password

Persa</font></b></p>

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

<%

' PRELEVA L'USERNAME INSERITO

Username = Replace(Request.Form("username"), "'", "''")

' CONTROLLA INNANZITUTTO SE E' STATO PASSATO UN VALORE, CIOE' VERIFICA

' CHE IL CAMPO USERNAME NON SIA VUOTO

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 88 di 161

IF Username <> "" then

' TUTTO OK...

' PERCORSO DEL DATABASE

url_DB = "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.mappath("/mdbdatabase/

database.mdb")

Set Conn = Server.CreateObject("ADODB.Connection")

conn.Open url_DB

Set RecSet = Server.CreateObject("ADODB.Recordset")

SQL = "SELECT * FROM Utenti where username = '" & username &"' and attivo = 1"

RecSet.Open SQL, Conn, adOpenStatic, adLockOptimistic

' CONTROLLA SE L'UTENTE ESISTE REALMENTE

IF Not RecSet.Eof Then

' UTENTE ESISTENTE

' PRELEVA I SUOI DATI (USERNAME, EMAIL E PASSWORD)

' E IMPOSTA LA VARIAIBILE "Presente" SU TRUE

Password = RecSet("password")

Email = RecSet("email")

Presente = True

Else

' ALTRIMENTI ... UTENTE NON ESISTENTE

' IMPOSTA LA VARIAIBILE "Presente" SU FALSE

Presente = False

End IF

' Chiude la connessione al DB

RecSet.Close

Set RecSet = Nothing

Conn.Close

Set Conn = Nothing

' FA LA CONDIZIONE PER VERIFICARE SE L'UTENTE E' ESISTENTE O MENO

IF Presente = True then

' UTENTE PRESENTE:

' PROVVEDE ALL'INVIO DELL'EMAIL CON I DATI PERSI

' UTILIZZANDO L'OGGETTO CDONTS

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 89 di 161

mittente = "mia_email@miosito.it"

testo = "Caro utente," & chr(13)

testo = testo & "ecco i dati della tua registrazione a MIO SITO:" & chr(13) & chr(13)

testo = testo & "Username: " & username & "" & chr(13)

testo = testo & "Password: " & password & "" & chr(13) & chr(13)

testo = testo & "Lo staff di Mio sito!" & chr(13)

testo = testo & "http://www.sitomio.it"

Set email = CreateObject("CDONTS.NewMail")

email.From = mittente

email.To = email

email.Subject = "[MIO SITO] RE-INVIO PASSWORD PERSA!"

email.Body = testo

email.Send

Set email = nothing

%>

<hr>

<p align="center"><b><font face="Verdana" size="2">Ti è stata inviata una email

con la password persa!</font></b></p>

<hr>

<%

Else

' UTENTE NON ESISTENTE

%>

<hr>

<p align="center"><b><font face="Verdana" size="2">Utente non

esistente!</font></b></p>

<hr>

<%

End IF

Else

' CAMPO "USERNAME" VUOTO (NON COMPILATO CORRETTAMENTE)

%>

<hr>

<p align="center"><b><font face="Verdana" size="2">Campo "username"

vuoto!</font></b></p>

<hr>

<%

End IF

%>

</body>

</html>

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 90 di 161

Creazione pagine per l’identificazione

Per quanto riguarda l’identificazione, iniziamo creando la pagina “login.asp”, nella

quale inserire il proprio username e password:

<html>

<head>

<title>SEZIONI RISERVATE</title>

</head>

<body>

<p>&nbsp;</p>

<p align="center"><b><font face="Verdana" size="3">Sezioni Riservate -

Login</font></b></p>

<form method="POST" action="verifica.asp">

<div align="center">

<center>

<table border="0" width="61%" cellspacing="0" cellpadding="0">

<tr>

<td width="50%"><font face="Verdana" size="2">Username:</font></td>

<td width="50%"><input type="text" name="username" size="20"></td>

</tr>

<tr>

<td width="50%"><font face="Verdana" size="2">Password:</font></td>

<td width="50%"><input type="password" name="password"

size="20"></td>

</tr>

<tr>

<td width="100%" colspan="2">

<p align="center"><input type="submit" value="Login" name="B1"><input

type="reset" value="Reimposta" name="B2"></p></td>

</tr>

</table>

</center>

</div>

</form>

<p align="left">&nbsp;</p>

</body>

</html>

I dati inseriti verranno inviati alla pagina “verifica.asp”, che ha il compito di verificare

i dati inseriti e quello di identificare (se i dati sono esatti) l’utente:

<html>

<head>

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 91 di 161

<title>SEZIONI RISERVATE</title>

</head>

<body>

<p>&nbsp;</p>

<p align="center"><b><font face="Verdana" size="3">Sezioni Riservate -

Login</font></b></p>

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

<%

' PRELEVA L'USERNAME E LA PASSWORD INSERITI

Username = Replace(Request.Form("username"), "'", "''")

Password = Replace(Request.Form("password"), "'", "''")

' CONTROLLA INNANZITUTTO SE E' STATO PASSATO UN VALORE, CIOE' VERIFICA

' CHE I CAMPI "Username" e "Password" NON SIANO VUOTI

IF Username <> "" and Password <> "" then

' TUTTO OK...

' PERCORSO DEL DATABASE

url_DB = "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.mappath("/mdbdatabase/

database.mdb")

Set Conn = Server.CreateObject("ADODB.Connection")

conn.Open url_DB

Set RecSet = Server.CreateObject("ADODB.Recordset")

' COME SI NOTA, LA PARTE "... AND ATTIVO = 1" SERVE

' PER VERIFICARE SE L'UTENTE HA ATTIVATO LA SUA

' REGISTRAZIONE, IN CASO CONTRARIO

' ESSO RISULTERA' INESISTENTE E NON POTRA' ACCEDERE ALLE

' SEZIONI RISERVATE DEL SITO...

SQL = "SELECT * FROM Utenti where username = '" & username &"' and password =

'" & password & "' and attivo = 1"

RecSet.Open SQL, Conn, adOpenStatic, adLockOptimistic

' CONTROLLA SE L'UTENTE ESISTE

IF Not RecSet.Eof Then

' UTENTE ESISTENTE

' IMPOSTA DUE SESSION:

' - LOGGATO, CON IL VALORE DI TRUE

' - USERNAME, CON IL SUO USERNAME

Session("Loggato") = True

Session("Username") = Username

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 92 di 161

Else

' ALTRIMENTI ... UTENTE NON ESISTENTE

' IMPOSTA LA SESSION "LOGGATO" CON

' IL VALORE DI FALSE

Session("Loggato") = False

End IF

' Chiude la connessione al DB

RecSet.Close

Set RecSet = Nothing

Conn.Close

Set Conn = Nothing

' FA LA CONDIZIONE PER VERIFICARE SE L'UTENTE E' STATO

' IDENTIFICATO O MENO

IF Session("Loggato") = True then

' UTENTE IDENTIFICATO...

' PORTA L'UTENTE NELLA PAGINA PROTETTA

' CHE NOI ABBIAMO CHIAMATO "PROTETTA_HOME.ASP"

Response.Redirect "protetta_home.asp"

Else

' DATI NON CORRETTI (UTENTE INESISTENTE - USERNAME/PASSWORD NON

CORRETTI)

%>

<hr>

<p align="center"><b><font face="Verdana" size="2">Username/Password non

corretti!</font></b></p>

<hr>

<%

End IF

Else

' CAMPI "USERNAME" E "PASSWORD" VUOTI

%>

<hr>

<p align="center"><b><font face="Verdana" size="2">Compila correttamente tutti i

campi!</font></b></p>

<hr>

<%

End IF

%>

</body>

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 93 di 161

</html>

Esempio di sezione riservata

A questo punto, una volta inseriti i dati di identificazione, se questi sono corretti si

verrà portati nella pagina “protetta_home.asp”, che sarà riservata solo agli iscritti

del sito.

Prima di vedere il codice di questa pagina, spieghiamo come devono essere create le

pagine il cui accesso deve essere riservato solo agli utenti...

Ecco come dovranno essere fatte le pagine riservate solo agli utenti registrati:

<%

' VERIFICHIAMO SE L'UTENTE E' IDENTIFICATO (LOGGATO)

IF Session("Loggato") = False and Session("Username") = "" then

' UTENTE NON LOGGATO

' (SESSION "LOGGATO" = FALSE E LA SESSION "USERNAME" NON HA NESSUN

VALORE)

' PORTA L'UTENTE NELLA PAGINA LOGIN.ASP

' PER FARLO IDENTIFICARE

Response.Redirect "login.asp"

End IF

%>

<html>

<head>

<title>SEZIONI RISERVATE</title>

</head>

<body>

<p>&nbsp;</p>

<p align="center"><b><font face="Verdana" size="3">Sezioni Riservate - Pagina

Protetta</font></b></p>

</body>

</html>

In questo modo all’inizio della pagina viene fatto un controllo (IF … Then) per

verificare se l’utente è identificato, in caso contrario si verrà portati nella pagina di

login (“login.asp”).

Ecco il codice della pagina “protetta_home.asp”:

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 94 di 161

<%

' VERIFICHIAMO SE L'UTENTE E' IDENTIFICATO (LOGGATO)

IF Session("Loggato") = False and Session("Username") = "" then

' UTENTE NON LOGGATO

' (SESSION "LOGGATO" = FALSE E LA SESSION "USERNAME" NON HA NESSUN

VALORE)

' PORTA L'UTENTE NELLA PAGINA LOGIN.ASP

' PER FARLO IDENTIFICARE

Response.Redirect "login.asp"

End IF

%>

<html>

<head>

<title>SEZIONI RISERVATE</title>

</head>

<body>

<p>&nbsp;</p>

<p align="center"><b><font face="Verdana" size="3">Sezioni Riservate - Area

personale</font></b></p>

<p align="left"><b><font face="Verdana" size="3">Benvenuto

<i><%=Session("Username")%> <%' VISUALIZZA IL NOME DELL'UTENTE

%></i></font></b></p>

<ul>

<li>

<b><font face="Verdana" size="2"><a href="cambia_password1.asp">Cambia

Password</a></font></b></li>

<li>

<b><font face="Verdana" size="2"><a

href="esci.asp">Esci</a></font></b></li>

</ul>

</body>

</html>

Come si nota ci sono due link:

Cambia_password1.asp, per far cambiare all’utente la propria password

Esci.asp, per far uscire l’utente dall’area riservata

Ecco il codice della pagina “esci.asp”, per uscire dalla sezione riservata:

<%

' CANCELLA TUTTE LE SESSION

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 95 di 161

Session.Abandon

' PORTA L'UTENTE NELLA PAGINA PRINCIPALE

' DEL SITO (IN QUESTO CASO PORTA L'UTENTE

' NELLA PAGINA "SEZIONI_RISERVATE.ASP")

Response.Redirect "sezioni_riservate.asp"

%>

Modifica dati utenti

Passiamo invece alla creazione della pagina “cambia_password1.asp”, per far

cambiare la password all’utente:

<%

' VERIFICHIAMO SE L'UTENTE E' IDENTIFICATO (LOGGATO)

IF Session("Loggato") = False and Session("Username") = "" then

' UTENTE NON LOGGATO

' (SESSION "LOGGATO" = FALSE E LA SESSION "USERNAME" NON HA NESSUN

VALORE)

' PORTA L'UTENTE NELLA PAGINA LOGIN.ASP

' PER FARLO IDENTIFICARE

Response.Redirect "login.asp"

End IF

%>

<html>

<head>

<title>SEZIONI RISERVATE</title>

</head>

<body>

<p>&nbsp;</p>

<p align="center"><b><font face="Verdana" size="3">Sezioni Riservate - Cambia

Password</font></b></p>

<form method="POST" action="cambia_password2.asp">

<div align="center">

<center>

<table border="0" width="61%" cellspacing="0" cellpadding="0">

<tr>

<td width="50%"><font face="Verdana" size="2">Vecchia

password:</font></td>

<td width="50%"><input type="password" name="password1"

size="20"></td>

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 96 di 161

</tr>

<tr>

<td width="50%"><font face="Verdana" size="2">Nuova

Password:</font></td>

<td width="50%"><input name="password2" size="20"></td>

</tr>

<tr>

<td width="100%" colspan="2">

<p align="center"><input type="submit" value="Modifica" name="B1"><input

type="reset" value="Reimposta" name="B2"></p></td>

</tr>

</table>

</center>

</div>

</form>

</body>

</html>

I dati inseriti in questa pagina verranno passati alla pagina

cambia_password2.asp”:

<%

' VERIFICHIAMO SE L'UTENTE E' IDENTIFICATO (LOGGATO)

IF Session("Loggato") = False and Session("Username") = "" then

' UTENTE NON LOGGATO

' (SESSION "LOGGATO" = FALSE E LA SESSION "USERNAME" NON HA NESSUN

VALORE)

' PORTA L'UTENTE NELLA PAGINA LOGIN.ASP

' PER FARLO IDENTIFICARE

Response.Redirect "login.asp"

End IF

%>

<html>

<head>

<title>SEZIONI RISERVATE</title>

</head>

<body>

<p>&nbsp;</p>

<p align="center"><b><font face="Verdana" size="3">Sezioni Riservate - Cambia

Password</font></b></p>

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

<%

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 97 di 161

' PRELEVA LE PASSWORD INSERITE

Password1 = Replace(Request.Form("password1"), "'", "''") ' (LA PASSWORD

VECCHIA)

Password2 = Replace(Request.Form("password2"), "'", "''") ' (LA PASSWORD NUOVA)

' CONTROLLA INNANZITUTTO SE E' STATO PASSATO UN VALORE, CIOE' VERIFICA

' CHE I CAMPI PASSWORD NON SIANO STATI LASCIATI VUOTI

IF Password1 <> "" and Password2 <> "" then

' TUTTO OK...

' PERCORSO DEL DATABASE

url_DB = "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.mappath("/mdbdatabase/

database.mdb")

Set Conn = Server.CreateObject("ADODB.Connection")

conn.Open url_DB

Set RecSet = Server.CreateObject("ADODB.Recordset")

SQL = "SELECT * FROM Utenti where username = '" & session("username") &"' and

password = '" & password1 & "'"

RecSet.Open SQL, Conn, adOpenStatic, adLockOptimistic

' CONTROLLA SE I DATI PASSATI SONO ESATTI

IF Not RecSet.Eof Then

' DATI ESATTI

' CAMBIA LA PASSWORD

' E IMPOSTA LA VARIABILE

' "ESATTI" SU TRUE

RecSet("password") = password2

RecSet.Update

Esatti = True

Else

' ALTRIMENTI ... DATI NON ESATTI

' IMPOSTA LA VARIABILE

' "ESATTI" SU FALSE

Esatti = False

End IF

' Chiude la connessione al DB

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 98 di 161

RecSet.Close

Set RecSet = Nothing

Conn.Close

Set Conn = Nothing

' FA LA CONDIZIONE PER SCEGLIERE QUALE MESSAGGIO MOSTRARE UTENTE:

' - LA PASSWORD E' STATA MODIFICATA

' - LA PASSWORD INSERITA NON E' ESATTA

IF Esatti = True then

' PASSWORD CAMBIATA...

%>

<hr>

<p align="center"><b><font face="Verdana" size="2">Password aggiornata

correttamente!</font></b></p>

<hr>

<%

Else

' PASSWORD INSERITA NON ESATTA

%>

<hr>

<p align="center"><b><font face="Verdana" size="2">La Password inserita non è

esatta!</font></b></p>

<hr>

<%

End IF

Else

' CAMPI PASSWORD VUOTI

%>

<hr>

<p align="center"><b><font face="Verdana" size="2">Compila correttamente tutti i

campi!</font></b></p>

<hr>

<%

End IF

%>

</body>

</html>

Abbiamo finalmente terminato la parte utente del nostro script!

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 99 di 161

Creazione parte amministrativa per la gestione di tutto lo script

Partiamo a questo punto a creare tutta la parte amministrativa del nostro script per la

registrazione.

Tutti i file citati partendo da qui, dovranno essere inseriti in una nuova cartella che

creeremo e che chiameremo “admin”, quindi avremo <cartella nostro sito>/admin/

Di seguito il codice della prima pagina “index.asp”, che contiene un modulo per

identificarsi come amministratore del sito ed entrare nella gestione delle registrazioni:

<%

' CONTROLLA SE SONO STATI INSERITI DATI NEI DUE CAMPI

' DI LOGIN (USERNAME E PASSWORD)

' USERNAME AMMINISTRATORE

username = "admin"

' PASSWORD AMMINISTRATORE

password = "admin"

IF Lcase(Request.Form("username")) = Lcase(username) and

Lcase(Request.Form("password")) = Lcase(password) then

' I DATI SONO ESATTI E SI VIENE IDENTIFICATI COME AMMINISTRATORE

' E PORTATI NELLA PAGINA "GESTIONE_REGISTRAZIONI.ASP"

session("amministratore") = true

Response.Redirect "Gestione_registrazioni.asp"

End if

%>

<html>

<head>

<title>GESTIONE REGISTRAZIONI</title>

</head>

<body>

<p align="center">&nbsp;</p>

<p align="center"><b><font size="4" face="Verdana">Gestione

Registrazioni!</font></b></p>

<form method="POST" action="index.asp">

<div align="center">

<center>

<table border="0" cellpadding="0" cellspacing="0" width="39%">

<tr>

<td width="50%"><font face="Verdana" size="2">Username:</font></td>

<td width="50%"><input type="text" name="username" size="20"></td>

</tr>

<tr>

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 100 di 161

<td width="50%"><font face="Verdana" size="2">Password:</font></td>

<td width="50%"><input type="password" name="password"

size="20"></td>

</tr>

<tr>

<td width="100%" colspan="2" height="5">

</td>

</tr>

<tr>

<td width="100%" colspan="2">

<p align="center"><input type="submit" value="Invia" name="B1"><input

type="reset" value="Reimposta" name="B2"></td>

</tr>

</table>

</center>

</div>

</form>

<p align="center">&nbsp;</p>

</body>

</html>

Ecco il codice della pagina “Gestione_registrazioni.asp”, nella quale vengono

visualizzati gli utenti registrati:

<%

' CONTROLLA SE SI E' IDENTIFICATI COME AMMINISTRATORE

IF Session("Amministratore") <> True Then

Response.Redirect "index.asp"

End IF

%>

<html>

<head>

<title>GESTIONE REGISTRAZIONI</title>

</head>

<body>

<p align="left"><font size="4" face="Verdana"><b>&gt; Gestione

Registrazioni!</b></font></p>

<p align="left"><font size="2" face="Verdana">Ecco gli utenti registrati al

sito:</font></p>

<p align="left"><!-- #include virtual = "/adovbs.inc" -->

<%

' NUMERO DI UTENTI PER PAGINA

iPageSize = 50

If Request.QueryString("page") = "" Then

iPageCurrent = 1

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 101 di 161

Else

iPageCurrent = CInt(Request.QueryString("page"))

End If

If Request.QueryString("order") = "" Then

strOrderBy = "id"

Else

strOrderBy = Request.QueryString("order")

End If

' PERCORSO DEL DATABASE

url_DB = "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.mappath("/mdbdatabase/

database.mdb")

Set Conn = Server.CreateObject("ADODB.Connection")

conn.Open url_DB

Set RS = Server.CreateObject("ADODB.Recordset")

' FA LA RICHIESTA AL DATABASE

sql = "SELECT * FROM Utenti ORDER BY " & strOrderBy & " DESC;"

RS.Open sql, conn, adOpenKeyset

RS.PageSize = iPageSize

RS.CacheSize = iPageSize

iPageCount = RS.PageCount

If iPageCurrent > iPageCount Then iPageCurrent = iPageCount

If iPageCurrent < 1 Then iPageCurrent = 1

' NESSUN UTENTE REGISTRATO -> VIENE VISUALIZZATO UN MESSAGGIO CHE

INFORMA CHE NON E' REGISTRATO

' NEMMENO UN UTENTE!

If iPageCount = 0 Then

%><hr>

<p align="center"><b><font size="2" face="Verdana">Nessun utente

registrato!</font></b></p>

<hr>

<%

Else

RS.AbsolutePage = iPageCurrent

iRecordsShown = 0

' SE INVECE SONO PRESENTI DEGLI UTENTI..

%>

<table border="0" cellpadding="0" cellspacing="0" width="100%">

<%

' VISUALIZZA L'USERNAME DELL'UTENTE

Do While iRecordsShown < iPageSize And Not RS.EOF

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 102 di 161

numero = numero + 1

%>

<tr>

<td width="7%"><font face="Verdana" size="2"><%=numero%>.</font></td>

<td width="172%"><font face="Verdana" size="2"><a

href="Modifica_utente.asp?id=<%=RS("id")%>"><b><%=RS("Username")%></b>

</a></font></td>

<td width="19%"><font face="Verdana" size="2"><a

href="Elimina_utente.asp?id=<%=RS("id")%>">Cancella</a></font></td>

</tr>

<%

iRecordsShown = iRecordsShown + 1

RS.MoveNext

Loop

%>

</table>

<%

End If

RS.Close

Set RS = Nothing

Conn.Close

%><center>

<%

' MOSTRA IL NUMERO DELLE PAGINE,

' DATO CHE VERRANNO MOSTRATI

' IN QUESTO ESEMPIO 50 UTENTI PER PAGINA

For x=1 to iPageCount

%>

<font face="Verdana" size="2">[ <b> <a

href="Gestione_Registrazioni.asp?page=<%=x%>&order=<%=

Server.URLEncode(strOrderBy) %>"><%=x%></a></b> ]</font>

<%

Next

%>

</center>

</p>

</body>

</html>

Nel codice della pagina per la gestione delle registrazioni, come si nota, vi sono due

link: uno alla pagina “Modifica_utente.asp”, con un modulo per modificare i dati

dell’utente, e “Elimina_utente.asp”, per eliminare la registrazione di un utente dal

nostro sito.

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 103 di 161

Ecco il codice della pagina “Elimina_utente.asp”, per eliminare un utente:

<!-- #include virtual = "/adovbs.inc" -->

<%

' PERCORSO DEL DATABASE

url_DB = "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.mappath("/mdbdatabase/

database.mdb")

Set Conn = Server.CreateObject("ADODB.Connection")

conn.Open url_DB

Set RecSet = Server.CreateObject("ADODB.Recordset")

SQL = "SELECT * FROM Utenti WHERE ID = " & Request.QueryString("id") &""

RecSet.Open SQL, Conn, adOpenStatic, adLockOptimistic

' CONTROLLA SE L'UTENTE ESISTE

If RecSet.Eof = False Then

' L'UTENTE E' PRESENTE, LO CANCELLA E AGGIORNA IL DB

RecSet.Delete

RecSet.Update

End IF

RecSet.Close

Conn.Close

Set RecSet = Nothing

Set Conn = Nothing

' PORTA L'AMMINISTRATORE NELLA PAGINA "GESTIONE_REGISTRAZIONI.ASP"

Response.Redirect "Gestione_registrazioni.asp"

%>

Passiamo ora alle due pagine per la modifica dei dati di un utente; ecco il codice della

pagina “Modifica_utente.asp”:

<%

' CONTROLLA SE SI E' IDENTIFICATI

IF session("amministratore")<>true then

Response.Redirect "index.asp"

End IF

%>

<html>

<head>

<title>GESTIONE REGISTRAZIONI</title>

</head>

<body>

<!-- #include virtual = "/adovbs.inc" -->

<%

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 104 di 161

' PERCORSO DEL DATABASE

url_DB = "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.mappath("/mdbdatabase/

database.mdb")

Set Conn = Server.CreateObject("ADODB.Connection")

conn.Open url_DB

Set RecSet = Server.CreateObject("ADODB.Recordset")

' PRELEVA I DATI DELL'UTENTE SELEZIONATO

SQL = "SELECT * FROM UTENTI WHERE ID = " & Request.QueryString("id") &""

RecSet.Open SQL, Conn, adOpenStatic, adLockOptimistic

' CONTROLLA SE L'UTENTE ESISTE...

IF Not RecSet.Eof Then

%>

<p><b><font face="Verdana" size="4">&gt; Modifica Utente</font></b></p>

<form method="POST" action="Utente_DB.asp?id=<%=RecSet("id")%>">

<table border="0" cellpadding="0" cellspacing="0" width="100%">

<tr>

<td width="19%"><font face="Verdana" size="2">Username:</font></td>

<td width="81%"><input type="text" name="username" size="20"

value="<%=RecSet("username")%>"></td>

</tr>

<tr>

<td width="19%"><font face="Verdana" size="2">Password:</font></td>

<td width="81%"><input type="text" name="password" size="20"

value="<%=RecSet("password")%>"></td>

</tr>

<tr>

<td width="19%"><font face="Verdana" size="2">E-mail:</font></td>

<td width="81%"><input type="text" name="email" size="20"

value="<%=RecSet("email")%>"></td>

</tr>

<tr>

<td width="19%"><font face="Verdana" size="2">Utente Attivo/Non

attivo:</font></td>

<td width="81%"><select size="1" name="attivo">

<option <% IF RecSet("attivo") = 1 then%>selected<%end if%>

value="1">Attivo</option>

<option <% IF RecSet("attivo") = 0 then%>selected<%end if%>

value="0">Non attivo</option>

</select></td>

</tr>

<tr>

<td width="100%" colspan="2"><input type="submit" value="Modifica utente"

name="B1"><input type="reset" value="Reimposta" name="B2"></td>

</tr>

</table>

</form>

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 105 di 161

<p><a href="Gestione_registrazioni.asp"><font face="Verdana" size="2"><b>Torna

alla Gestione delle Registrazioni</b></font></a></p>

<%

Else

' ALTRIMENTI... L'UTENTE NON ESISTE

' PORTA L'AMMINISTRATORE NELLA PAGINA

' PRECEDENTE...

Response.Redirect "Gestione_registrazioni.asp"

End IF

RecSet.Close

Conn.Close

Set RecSet = Nothing

Set Conn = Nothing

%>

</body>

</html>

I dati dell’utente inseriti verranno passati alla pagina “Utente_DB.asp”, che

provvederà a modificare i dati nel DB:

<%

' CONTROLLA SE SI E' IDENTIFICATI

IF session("amministratore")<>true then

Response.Redirect "index.asp"

End IF

%>

<html>

<head>

<title>GESTIONE NEWS</title>

</head>

<body>

<p><b><font face="Verdana" size="4">&gt; Gestione

Registrazioni</font></b></p>

<!-- #include virtual = "/adovbs.inc" -->

<%

' PERCORSO DEL DATABASE

url_DB = "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.mappath("/mdbdatabase/

database.mdb")

Set Conn = Server.CreateObject("ADODB.Connection")

conn.Open url_DB

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 106 di 161

' CONTROLLA SE TUTTI I CAMPI SONO STATI COMPILATI CORRETTAMENTE

IF Len(Request("username")) = 0 or Len(Request("password")) = 0 or

Len(Request("email")) = 0 or Instr(Request("email"), ".") = 0 or

Instr(Request("email"), "@") = 0 then

' CAMPI NON COMPILATI CORRETTAMENTE!

%>

<hr>

<p align="center"><font face="Verdana" size="4"><b>Campi non compilati

correttamente!</b></font></p>

<hr>

<%

Else

' CAMPI COMPILATI CORRETTAMENTE

Set RecSet = Server.CreateObject("ADODB.Recordset")

SQL = "SELECT * FROM UTENTI WHERE ID = " & Request.Querystring("id") &""

RecSet.Open SQL, Conn, adOpenStatic, adLockOptimistic

' CONTROLLA SE L'UTENTE ESISTE...

IF Not RecSet.Eof Then

' UTENTE ESISTENTE...

RecSet("username") = Replace(Request.Form("username"), "'", "''")

RecSet("password") = Replace(Request.Form("password"), "'", "''")

RecSet("email") = Replace(Request.Form("email"), "'", "''")

RecSet("attivo") = Request.Form("attivo")

' AGGIORNA IL DB

RecSet.Update

Else

' ALTRIMENTI..

' UTENTE NON ESISTENTE...

' PORTA L'AMMINISTRATORE NELLA PAGINA

' "GESTIONE_REGISTRAZIONI.ASP"

Response.Redirect "Gestione_registrazioni.asp"

End IF

RecSet.Close

Conn.Close

Set RecSet = Nothing

Set Conn = Nothing

%>

<hr>

<p align="center"><font face="Verdana" size="4"><b>Operazione eseguita

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 107 di 161

correttamente!</b></font></p>

<hr>

<%

End IF

%>

<p align="left"><font face="Verdana" size="2"><b><a

href="Gestione_registrazioni.asp">Torna alla Gestione delle

Registrazioni</a></b></font></p>

</body>

</html>

Abbiamo terminato così la realizzazione del nostro script. Vediamo ora comunque delle

personalizzazioni...

Personalizzazioni

1. Integrazione con la newsletter

2. Pulizia DB

3. Trucchi vari

Integrazione con la newsletter

Vediamo come modificare lo script della newsletter per far inviare la newsletter agli

iscritti del nostro sito:

1. Apriamo la pagina di gestione della newsletter (“Gestione_Newsletter.asp”)

2. Cerchiamo queste righe:

' APRE LA CONNESSIONE AL DATABASE E PRELEVA LE EMAIL DELLA NEWSLETTER

Set RecSet = Server.CreateObject("ADODB.Recordset")

SQL = "SELECT * FROM Email_Newsletter"

3. Sostituiamo quindi la riga:

SQL = "SELECT * FROM Email_Newsletter"

4. Con questa riga:

SQL = "SELECT Email FROM Utenti"

5. In questo modo le email verranno prese direttamente dalla tabella “Utenti”,

che si trova nello stesso DB della newsletter, e riceveranno la newsletter solo gli

utenti registrati del sito!

6. Cambiamo inoltre sempre nella pagina “Gestione_newsletter.asp” la riga:

SQL = "SELECT Count(*) FROM Email_Newsletter"

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 108 di 161

7. Con questa:

SQL = "SELECT Count(*) FROM Utenti"

8. In questo modo verranno visualizzati accanto alla scritta “Numero iscritti:”, il

numero degli iscritti al nostro sito (... e di conseguenza alla nostra newsletter!)

Pulizia DB

Ogni tanto possiamo fare pulizia nel nostro DB eliminando tutti gli iscritti che non

hanno confermato la loro registrazione con questo script:

<!-- #include virtual = "/adovbs.inc" -->

<%

' PERCORSO DEL DATABASE

url_DB = "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.mappath("/mdbdatabase/

database.mdb")

Set Conn = Server.CreateObject("ADODB.Connection")

conn.Open url_DB

Set RecSet = Server.CreateObject("ADODB.Recordset")

SQL = "SELECT * FROM UTENTI WHERE ATTIVO = 0"

RecSet.Open SQL, Conn, adOpenStatic, adLockOptimistic

Do Until RecSet.Eof

RecSet.Delete

RecSet.Update

RecSet.Movenext

Loop

RecSet.Close

Set RecSet = Nothing

Conn.Close

Set Conn = Nothing

%>

Noi ad esempio abbiamo creato la pagina “Pulizia_DB.asp”:

<html>

<head>

<title>GESTIONE REGISTRAZIONI</title>

</head>

<body>

<p><b><font face="Verdana" size="4">&gt; Pulizia DB</font></b></p>

<!-- #include virtual = "/adovbs.inc" -->

<%

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 109 di 161

' PERCORSO DEL DATABASE

url_DB = "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.mappath("/mdbdatabase/

database.mdb")

Set Conn = Server.CreateObject("ADODB.Connection")

conn.Open url_DB

Set RecSet = Server.CreateObject("ADODB.Recordset")

SQL = "SELECT * FROM UTENTI WHERE ATTIVO = 0"

RecSet.Open SQL, Conn, adOpenStatic, adLockOptimistic

' CANCELLA GLI UTENTI CHE NON

' HANNO ATTIVATO LA LORO REGISTRAZIONE...

Do Until RecSet.Eof

RecSet.Delete

RecSet.Update

RecSet.Movenext

Loop

RecSet.Close

Set RecSet = Nothing

Conn.Close

Set Conn = Nothing

%>

<hr>

<p align="center"><font face="Verdana" size="4"><b>Operazione eseguita

correttamente!</b></font></p>

<hr>

<p><a href="Gestione_registrazioni.asp"><font face="Verdana" size="2"><b>Torna

alla Gestione delle Registrazioni</b></font></a></p>

</body>

</html>

Può essere inserito un link verso questa pagina in “Gestioni_registrazioni.asp”,

scrivendo nel codice HTML della pagina:

<a href="Pulizia_DB.asp">Pulizia DB</a>

Ovviamente la pagina “Pulizia_DB.asp” dovrà essere inserita nella cartella

admin”...

Trucchi vari

Di default una session si cancella automaticamente dopo solo 20 minuti di inattività.

Questo significa che se un utente si ferma a leggere una pagina protetta del nostro

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 110 di 161

sito per oltre 20 minuti e poi cerca di aprire un’altra pagina protetta, l’utente non

verrà più considerato identificato e gli verrà visualizzata la pagina di login...

Per aggirare l’ostacolo, inseriremo nelle nostre pagine protette, al posto di:

<%

' VERIFICHIAMO SE L'UTENTE E' IDENTIFICATO (LOGGATO)

IF Session("Loggato") = False and Session("Username") = "" then

' UTENTE NON LOGGATO

' (SESSION "LOGGATO" = FALSE E LA SESSION "USERNAME" NON HA NESSUN

VALORE)

' PORTA L'UTENTE NELLA PAGINA LOGIN.ASP

' PER FARLO IDENTIFICARE

Response.Redirect "login.asp"

End IF

%>

Questo:

<%

' Session.Timeout = numero di minuti dopo i quali la session sarà nulla...

' AD ESEMPIO:

Session.Timeout = 80

' VERIFICHIAMO SE L'UTENTE E' IDENTIFICATO (LOGGATO)

IF Session("Loggato") = False and Session("Username") = "" then

Response.Redirect "login.asp"

End IF

%>

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 111 di 161

Capitolo 13

Creare una chat

In un sito è molto importante comunicare con i propri utenti. A questo scopo risulta

fondamentale la creazione di una chat,

Due sono le possibilità per la sua realizzazione in ASP:

Utilizzare un database (DB) Access

Utilizzare le Application

Utilizzare un database (DB) Access

Si tratta di una soluzione molto scomoda, poiché si dovrebbero richiedere/aggiungere

dati dal nostro database Access continuamente, con i problemi che ne deriverebbero:

lentezza e spesso blocchi, perché come si sa un database Access supporta massimo

30 utenti contemporaneamente.

Utilizzare le Application

Questa è la soluzione che utilizzeremo per la creazione della nostra chat.

Le Application, come le loro “gemelle” Session, servono per condividere dei dati

all’interno di una applicazione in ASP, però a differenza delle Session esse condividono

dati a livello globale, fra gli utenti di tutto il sito.

Utilizzeremo, appunto, le Application per condividere fra gli utenti del sito i messaggi

della chat e la lista degli utenti connessi.

Iniziamo a parlare della chat. Essa sarà costituita da tre frame, nei quali saranno

visualizzate le varie parti della chat:

Nel frame inferiore ci sarà una pagina con un modulo in cui inserire i messaggi

che, una volta inviati, verranno visualizzati nella chat

Nel frame laterale ci sarà, invece, la lista degli utenti connessi alla chat

Nel frame centrale ci saranno invece i messaggi della chat

Quindi, questa sarà la chat:

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 112 di 161

Prima di passare ad analizzare il codice dello script ASP spieghiamo come funziona

tecnicamente la chat.

Nella parte inferiore verranno inseriti i messaggi i quali, una volta fatto click sul tasto

Invia, verranno inseriti nell’application “Messaggi” che conterrà i messaggi della chat.

Tutti i messaggi inseriti in questa application sono separati da “@!/”, in modo da

poterli formattare in seguito, per la loro visualizzazione.

Ogni messaggio avrà un formato di questo tipo:

<b>Username Utente</b> Ora : Messaggio@!/

Quindi l’application “messaggi” ad esempio sarà:

<b>Salvatore</b> - 21.52.33 : proviamo la chat del mio libro!

:D@!/<b>Salvatore</b> - 21.52.28 : ciao a tutti! :D

Nel frame centrale, nel quale verranno visualizzati i messaggi della chat, la stringa

separatrice “@!/” verrà rimpiazzata con un “a capo” (<br>) in questo modo i

messaggi verranno visualizzati in modo ordinato. Per l’username in grassetto

provvederanno i tag HTML <b> e </b> (in mezzo ai quali è inserito l’username

dell’utente del messaggio) a renderlo grassetto.

La stessa cosa accade per gli username degli utenti connessi in chat, che sono sempre

separati da “@!/”. Essi sono contenuti nell’application “Username”, che sarà ad

esempio:

@!/Salvatore@!/Giuseppe

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 113 di 161

Dopo questa introduzione passiamo al codice vero e proprio.

Il “cuore” della chat è la pagina “chat.asp”. Questa pagina tuttofare avrà tre funzioni:

Visualizzare un modulo nel quale inserire il proprio username

Effettuare l’identificazione dell’utente in chat

Visualizzare la chat

Ecco il suo codice:

<html>

<head>

<title>CHAT</title>

</head>

<%

' IMPOSTA IL SESSION.TIMEOUT

' A UN MINUTO (1) PER MANTENERE

' AGGIORNATA LA LISTA DEGLI UTENTI

' CHE ESCONO DALLA CHAT

' (DOPO OGNI MINUTO CHE LA SESSION

' NON VIENE RINNOVATA, LA SESSIONE

' DELL'UTENTE TERMINERA' E

' VERRA' VISUALIZZATO UN MESSAGGIO

' CHE INFORMA CHE L'UTENTE E' USCITO

' DALLA CHAT)

Session.Timeout = 1

' SE SI DEVE FAR VISUALIZZARE

' LA CHAT, VIENE NASCOSTO IL TAG "<BODY>"

' (PERCHE' ALTRIMENTI

' NON VERRANNO VISUALIZZATI

' I FRAME DI CUI ESSA E' FORMATA)

IF Session("Username") = "" then

Response.Write "<body>"

End IF

' RICHIEDE L'OPERAZIONE DA FARE

Operazione = Request("tipo")

IF Session("Username") <> "" and Session("Loggato_Chat") = True then

' LA SESSION "USERNAME"

' CONTIENE UN VALORE E QUINDI DOVRA'

' ESSERE VISUALIZZATA LA CHAT...

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 114 di 161

' LA CHAT E' FORMATA DA TRE FRAME:

' - UNO LATERALE, CON GLI UTENTI CONNESSI

' (PAGINA: UTENTI_CHAT.ASP)

'

' - UNO CENTRALE, CON I MESSAGGI DELLA CHAT

' (PAGINA: CENTRO_CHAT.ASP)

'

' - UNO INFERIORE, CON UN CAMPO DI TESTO

' DOVE INSERIRE I MESSAGGI CHE APPARIRANNO IN CHAT

' (PAGINA: MSG_CHAT.ASP)

%>

<frameset cols="78%,*">

<frameset rows="*,15%">

<frame name="Centro" src="centro_chat.asp">

<frame name="Inferiore" src="msg_chat.asp">

</frameset>

<frame name="Utenti" src="utenti_chat.asp">

<noframes>

<body>

<%

' SE NON SONO SUPPORTATI

' I FRAME, VISUALIZZA UN MESSAGGIO:

%>

<p>La pagina corrente utilizza i frame. Questa caratteristica non è

supportata dal browser in uso.</p>

</body>

</noframes>

</frameset>

<%

ElseIF Operazione = "login" then

' SE IL VALORE DELLA VARIABILE

' "OPERAZIONE" E' "LOGIN" DOVRA'

' ESSERE EFFETTUTATO IL LOGIN

' PER ENTRARE IN CHAT...

' VERIFICA INNANZITTUTTO

' SE IL CAMPO "USERNAME" E' STATO

' COMPILATO CORRETTAMENTE

Username = Request("username")

' RIMPIAZZA "<" E ">" CON IL LORO

' CORRISPONDENDE CODICE HTML

Username = Replace(Username, "<", "&lt;")

Username = Replace(Username, ">", "&gt;")

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 115 di 161

' TUTTI GLI UTENTI COLLEGATI

' VENGONO SALVATI IN UNA APPLICATION

' (CHE, COME SI SA, SERVE PER CONDIVIDERE

' DEI DATI, DELLE INFORMAZIONI FRA GLI UTENTI

' DI UN SITO...)

' OGNI USERNAME E' SEPARATO DAGLI ALTRI

' DA "@!/", QUINDI NEL CONTROLLO

' PER L'USERNAME QUESTI CARATTERI NON

' SARANNO AMMESSI

IF TRIM(Username) = "" or Instr(Username, "@!/") > 0 then

' USERNAME NON CORRETTO...

%>

<p align="center">&nbsp;</p>

<hr>

<p align="center">

<b><font size="3" face="Verdana">Username non valido!</font></b>

</p>

<hr>

<%

Else

' USERNAME CORRETTO

' CONTROLLA SE L'USERNAME E' GIA' IN USO

' (GLI UTENTI COLLEGATI IN CHAT SI TROVANO

' NELL'APPLICATION "UTENTI")

IF Instr(Application("utenti"), "@!/" & Username) > 0 then

' USERNAME GIA' IN USO...

%>

<p align="center">&nbsp;</p>

<hr>

<p align="center">

<b><font size="3" face="Verdana">Username già in uso!</font></b>

</p>

<hr>

<%

Else

' USERNAME NON USATO...

' LO AGGIUNGE NELLA LISTA DEGLI UTENTI

' CONNESSI...

'

' BLOCCA L'APPLICATION PRIMA DI INSERIRE

' IL NUOVO UTENTE, PER EVITARE CONFLITTI...

Application.Lock

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 116 di 161

' AGGIUNGE L'UTENTE NELLA LISTA DEGLI UTENTI

Application("Utenti") = Application("Utenti") & "@!/" & Username

' SBLOCCA L'APPLICATION

Application.Unlock

' IMPOSTA LA SESSION "USERNAME"

' CON L'USERNAME DELL'UTENTE

'

' QUESTA SESSION CI SARA' UTILE

' PER FARE APPARIRE L'USERNAME

' DELL'UTENTE CHE INSERISCE UN

' MESSAGGIO IN CHAT...

Session("Username") = Username

' IMPOSTA LA SESSION "LOGGATO_CHAT"

' SU TRUE

Session("Loggato_Chat") = True

' MOSTRA INOLTRE IN CHAT LA FRASE

' "E' ENTRATO IN CHAT USERNAME"

'

' PER FARE QUESTO, INSERISCE

' QUESTRA FRASE IN UN'ALTRA APPLICATION

' ("MESSAGGI"), CHE CONTIENE I

' MESSAGGI DELLA CHAT

'

' VEDREMO MEGLIO QUESTA APPLICATION

' NELLE ALTRE PAGINE DELLA CHAT

Application.Lock

Application("Messaggi") = "<b>E' entrato in chat <i>" & Username &"</i></b>@!/"

& Application("Messaggi")

Application.Unlock

' PORTA L'UTENTE IN CHAT

'

' COME SI NOTA DI SEGUITO,

' LA PAGINA IN CUI SI PORTA L'UTENTE

' E' QUESTA STESSA!

'

' ALL'INIZIO, SE RICORDATE BENE, VIENE

' FATTO UN CONTROLLO

' PER VEDERE SE LA SESSION "USERNAME"

' CONTIENE UN VALORE

' E SE LO HA (ORA LO HA...) E

' LA SESSION "LOGGATO_CHAT" E' UGUALE A TRUE,

' VIENE VISUALIZZATA LA CHAT...

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 117 di 161

Response.Redirect "chat.asp"

End IF

End IF

' IN CASO CONTRARIO,

' SE LA SESSION "USERNAME" NON CONTIENE

' NESSUN VALORE E LA SESSION "LOGGATO_CHAT"

' E' UGUALE A FALSE, E NON SI DEVE SVOLGERE

' L’IDENTIFICAZIONE DELL’UTENTE, VIENE VISUALIZZATO IL MODULO

' DI LOGIN PER ENTRARE IN CHAT...

Else

%>

<p align="center">&nbsp;</p>

<p align="center"><b><font size="3" face="Verdana">Entra in Chat! -

Identificazione</font></b></p>

<div align="center">

<center>

<form method="POST" action="chat.asp?tipo=login">

<table border="0" width="309" cellpadding="0" cellspacing="0">

<tr>

<td width="135"><font face="Verdana" size="2">Username:</font></td>

<td width="170"><input type="text" name="username" size="20"></td>

</tr>

<tr>

<td width="305" colspan="2">

<p align="center"><input type="submit" value="Invia" name="B1"><input

type="reset" value="Reimposta" name="B2"></p>

</td>

</tr>

</table>

</form>

</center>

</div>

<%

End IF

%>

<%

' MOSTRA (O MENO) IL TAG DI CHIUSURA

' "</BODY>", IN BASE SE DEVE ESSERE VISUALIZZATA

' LA CHAT O DEVE ESSERE ESEGUITA

' UN'ALTRA OPERAZIONE

IF Session("Username") = "" then

Response.Write "</body>"

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 118 di 161

End IF

%>

</html>

Come si nota, in questa pagina (“chat.asp”) vengono fatte diverse condizioni e in base

al loro valore verrà la chat, la schermata di login, ecc...

I frame che costituiscono la chat sono tre:

Centro_chat.asp (il centro della chat, dove verranno visualizzati i messaggi

pubblicati in chat)

Utenti_chat.asp (la parte laterale della chat, nella quale verranno visualizzati

gli utenti connessi alla chat)

Msg_chat.asp (il frame inferiore, dove sarà possibile inserirei i messaggi da

far visualizzare in chat.

Partiamo dal frame centrale della chat, che richiama la pagina “Centro_chat.asp”:

<%

' VERIFICA SE L'UTENTE

' E' REGOLARMENTE IDENTIFICATO

' (IN CASO CONTRARIO MOSTRERA'

' UNA PAGINA VUOTA)

IF Session("Username") <> "" and Session("Loggato_Chat") = True Then

%>

<html>

<head>

<title>CHAT - MESSAGGI</title>

</head>

<SCRIPT LANGUAGE=Javascript>

<!--

// CARICA OGNI 4 SECONDI QUESTA PAGINA

// PER VISUALIZZARE I MESSAGGI DELLA CHAT

// IN MODO AGGIORNATO

setTimeout("location='centro_chat.asp'", 4000)

//-->

</SCRIPT>

<body>

<p><font size="2" face="Verdana"><b>La MIA CHAT!</b></font></p>

<p><font size="2" face="Verdana">

<%

Session.Timeout = 1

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 119 di 161

' MOSTRA I MESSAGGI DELLA CHAT

' (CONTENUTI NELL'APPLICATION "MESSAGGI")

'

' OVVIAMENTE FORMATTA PRIMA QUESTI MESSAGGI:

' VIENE SOSTITUITO IL SEPARATORE DEI MESSAGGI

' (@!/) CON UN "A CAPO" (<BR>)...

Response.Write Replace(Application("messaggi"), "@!/", "<br>")

%></font></p>

</body>

</html>

<%

End IF

%>

In questa precedente pagina si nota uno Javascript:

<SCRIPT LANGUAGE=Javascript>

<!--

// CARICA OGNI 4 SECONDI QUESTA PAGINA

// PER VISUALIZZARE I MESSAGGI DELLA CHAT

// IN MODO AGGIORNATO

setTimeout("location='centro_chat.asp'", 4000)

//-->

</SCRIPT>

Questo Javascript, come abbiamo commentato, serve per far caricare la pagina ogni 4

secondi, in modo da rendere aggiornata la visualizzazione dei messaggi, i quali

verranno quindi richiesti dall’application “Messaggi” ogni 4 secondi...

Passiamo ora al frame laterale, nel quale appaiono gli utenti connessi alla chat

(utenti_chat.asp):

<%

' VERIFICA SE L'UTENTE

' E' REGOLARMENTE IDENTIFICATO

' (IN CASO CONTRARIO MOSTRERA'

' UNA PAGINA VUOTA)

IF Session("Username") <> "" and Session("Loggato_Chat") = True Then

%>

<html>

<head>

<title>CHAT - UTENTI CONNESSI</title>

<SCRIPT LANGUAGE=Javascript>

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 120 di 161

<!--

// CARICA OGNI 10 SECONDI QUESTA PAGINA

// PER MANTERE AGGIORNATA LA LISTA DEGLI

// UTENTI...

setTimeout("location='utenti_chat.asp'", 10000)

//-->

</SCRIPT>

</head>

<body>

<%

' PRELEVA GLI UTENTI CONNESSI ALLA CHAT

' DALL'APPLICATION "UTENTI"

Utenti = Application("utenti")

' RIMPIAZZA "<" E ">" CON IL LORO

' CORRISPONDENDE CODICE HTML

Utenti = Replace(Utenti, ">", "&lt;")

Utenti = Replace(Utenti, "<", "&gt;")

' COME SI NOTA LA STRINGA

' CHE SEPARA GLI USERNAME (@!/) VIENE

' RIMPIAZZATA CON UN "A CAPO" (<BR>),

' QUESTO PER VISUALIZZARE IN MODO

' FORMATTATO LA LISTA DEGLI UTENTI CONNESSI:

Utenti = Replace(Utenti, "@!/", "<br> - ")

%>

<p><b><font face="Verdana" size="2">Utenti Connessi</font></b></p>

<p><font face="Verdana" size="2"><%=Utenti%><br><br><b><a

href="esci_chat.asp" target="_top">Esci dalla chat</a></b></font></p>

</body>

</html>

<%

End IF

%>

Si nota pure qua il precedente Javascript per tenere aggiornata la lista degli utenti...

Si nota inoltre un link alla pagina “esci_chat.asp”, che serve per far uscire un utente

dalla chat. In qualsiasi modo, se l’utente dovesse chiudere la pagina della chat, egli

verrebbe ugualmente segnalato uscito dalla chat dopo un minuto (Session.TimeOut =

1) e grazie al file “global.asa” che ora analizzeremo...

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 121 di 161

Ecco il codice della pagina “esci_chat.asp”:

<%

' VERIFICA SE L'UTENTE

' E' REGOLARMENTE IDENTIFICATO

IF Session("Username") <> "" and Session("Loggato_Chat") = True Then

' DISCONETTE L'UTENTE DALLA CHAT...

'

' TOGLIE L'UTENTE DALLA LISTA

' DEGLI UTENTI CONNESSI E VISUALIZZA UN MESSAGGIO

' DI USCITA FRA I MESSAGGI DELLA CHAT

Session("Loggato_Chat") = False

Application.Lock

Application("Utenti") = Replace(Application("Utenti"), "@!/" & Session("Username"),

"")

Application.UnLock

Application.Lock

Application("Messaggi") = "<b>E' uscito dalla chat <i>" & Session("Username")

&"</i></b>@!/" & Application("Messaggi")

Application.UnLock

End IF

' PORTA L'UTENTE NELLA PAGINA

' CHAT.ASP (VERRA' VISUALIZZATO IL LOGIN)

Response.Redirect "chat.asp"

%>

Passiamo infine alla pagina che serve per inserire i messaggi in chat, la pagina

msg_chat.asp”:

<%

' VERIFICA SE L'UTENTE

' E' REGOLARMENTE IDENTIFICATO

' (IN CASO CONTRARIO MOSTRERA'

' UNA PAGINA VUOTA)

IF Session("Username") <> "" and Session("Loggato_Chat") = True Then

' RICHIEDE IL TESTO INSERITO

' NEL CAMPO "Messaggio"

Messaggio = Request.Form("Messaggio")

' CONTROLLA SE DEVE INSERIRE IN CHAT

' UN MESSAGGIO DELL'UTENTE...

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 122 di 161

IF Len(Trim(Messaggio)) > 0 Then

' DEVE INSERIRE UN MESSAGGIO:

' IL CAMPO "Messaggio" CONTIENE

' DEL TESTO

'

'

' BLOCCA L'APPLICATION PRIMA DI INSERIRE

' IL NUOVO MESSAGGIO, PER EVITARE CONFLITTI...

Application.Lock

' AGGIUNGE IL MESSAGGIO!

'

' TUTTI I MESSAGGI SONO SEPARATI DA "@!/", QUINDI

' DOVREMO EVITARE QUESTI CARATTERI NEL MESSAGGIO

' (LI SOSTITUIAMO, INFATTI, SE SONO PRESENTI, CON UNO SPAZIO)

Messaggio = Replace(messaggio, "@!/", " ")

' RIMPIAZZA "<" E ">" CON IL LORO

' CORRISPONDENDE CODICE HTML

Messaggio = Replace(messaggio, "<", "&lt;")

Messaggio = Replace(messaggio, ">", "&gt;")

' ORA RICOSTRUIAMO IL MESSAGGIO:

' USERNAME (IN GRASSETTO) - ORA : MESSAGGIO INSERITO

'

' I MESSAGGI DELLA CHAT

' SONO CONTENUTI NELLA APPLICATION

' "MESSAGGI"

Application("Messaggi") = "<b>" & Session("username") & "</b> - " & Time() &" : "

& Messaggio & "@!/" & Application("Messaggi")

' SBLOCCA L'APPLICATION

Application.Unlock

End IF

%>

<html>

<head>

<title>CHAT - INSERISCI MESSAGGIO</title>

</head>

<body onload="document.forms[0].Messaggio.focus();">

<%

' MODULO PER INSERIRE IL MESSAGGIO

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 123 di 161

' IN CHAT

'

' IL MODULO RIMANDA IL TESTO INSERITO

' NELLA STESSA PAGINA

' (CHE PROVVEDERA' A INSERIRLO NELLA APPLICATION "MESSAGGIO",

' PARTE INIZIALE DI QUESTA PAGINA..)

%>

<form method="POST" action="msg_chat.asp">

<table border="0" cellpadding="0" cellspacing="0" width="100%">

<tr>

<td width="19%"><font face="Verdana"

size="2"><b>Messaggio:</b></font></td>

<td width="81%"><input type="text" name="Messaggio" size="37"> <input

type="submit" value="Invia" name="B1"></td>

</tr>

</table>

</form>

</body>

</html>

<%

End IF

%>

La precedente pagina come si vede ha due compiti:

Il primo quello di mostrare il modulo nel quale inserire il messaggio che verrà

poi visualizzato in chat

Quello di inserire il messaggio nell’application

Si nota inoltre nell’evento Onload del tag Body un codice Javascript:

<body onload="document.forms[0].Messaggio.focus();">

Questo codice Javascript (document.forms[0].Messaggio.focus();) serve per far

apparire il cursore di scrittura direttamente nel campo in cui inserire il messaggio che

apparirà in chat, così lo si può scrivere direttamente, senza bisogno di cliccargli sopra:

Come detto precedentemente, per gestire le uscite degli utenti dalla chat dovremo

utilizzare il file global.asa, che come sappiamo dovrà essere collocato nella root

principale del nostro sito, quindi se abbiamo il sito http://www.miosito.it, il file

global.asa dovrà essere inserito in http://www.miosito.it/global.asa

Ecco il suo codice:

<SCRIPT LANGUAGE="VBSCRIPT" RUNAT=SERVER>

Sub Session_OnEnd()

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 124 di 161

IF Session("Username") <> "" and Session("Loggato_Chat") = True then

Application.Lock

Application("Utenti") = Replace(Application("Utenti"), "@!/" & Session("Username"),

"")

Application.UnLock

Application.Lock

Application("Messaggi") = "<b>E' uscito dalla chat <i>" & Session("Username")

&"</i></b>@!/" & Application("Messaggi")

Application.UnLock

Session("Loggato_Chat") = False

End IF

End Sub

</SCRIPT>

Questo codice serve appunto per far visualizzare in chat un messaggio che indica che

l’utente ha abbandonato la chat e per eliminare l’utente dagli utenti connessi.

Può sorgere un problema se abbiamo messo in pratica quanto detto nell’articolo per

far visualizzare gli utenti connessi... come fare ad unire i due global.asa? Semplice!

Questo di seguito è il global.asa che comprende il codice per la chat e per gli utenti

connessi:

<SCRIPT LANGUAGE="VBSCRIPT" RUNAT=SERVER>

Sub Application_OnStart()

Application("Utenti_n") = 0

End Sub

Sub Session_OnStart()

Application.Lock

Application("Utenti_n") = Application("Utenti") + 1

Application.unLock

End Sub

Sub Session_OnEnd()

Application.Lock

Application("Utenti_n") = Application("Utenti") - 1

Application.unLock

IF Session("Username") <> "" and Session("Loggato_Chat") = True then

Application.Lock

Application("Utenti") = Replace(Application("Utenti"), "@!/" & Session("Username"),

"")

Application.UnLock

Application.Lock

Application("Messaggi") = "<b>E' uscito dalla chat <i>" & Session("Username")

&"</i></b>@!/" & Application("Messaggi")

Application.UnLock

Session("Loggato_Chat") = False

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 125 di 161

End IF

End Sub

</SCRIPT>

Conflitti con altre parti del sito

Con la chat che abbiamo creato è sorto un problema: la compatibilità con lo script

delle registrazioni.

Per risolvere questo problema, sopra le pagine riservate agli utenti basterà inserire

semplicemente:

<%

Session.Timeout = numero di minuti dopo i quali la session si cancellerà

' VERIFICHIAMO SE L'UTENTE E' IDENTIFICATO (LOGGATO)

IF Session("Loggato") = False and Session("Username") = "" then

' UTENTE NON LOGGATO

' (SESSION "LOGGATO" = FALSE E LA SESSION "USERNAME" NON HA NESSUN

VALORE)

' PORTA L'UTENTE NELLA PAGINA LOGIN.ASP

' PER FARLO IDENTIFICARE

Response.Redirect "login.asp"

End IF

%>

Cioè in pratica si deve impostare il Session.Timeout, altrimenti la session finirà la sua

validità dopo un minuto (Session.Timeout = 1, impostato nello script della chat, per

mantenere aggiornata la lista degli utenti).

Strumenti per l’amministratore

Può risultare utile “pulire”, eliminare ogni tanto il contenuto dell’Application. Questa

pagina (che noi abbiamo chiamato “resetta.asp”:

<%

' VERIFICA SE L'UTENTE

' CHE STA RICHIEDENDO LA PAGINA

' E' L'AMMINISTRATORE DELLA CHAT

IF Session("Username") = "USERNAME AMMINISTRATORE" and

Session("Loggato_Chat") = True Then

%>

<html>

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 126 di 161

<head>

<title>CHAT - PULIZIA</title>

</head>

<body>

<%

Application.Lock

Application("Messaggi") = ""

Application.UnLock

%>

<hr>

<p align="center"><b><font face="Verdana">Messaggi resettati!</font></b></p>

<hr>

</body>

</html>

<%

Else

' ALTRIMENTI...

' (NON E' L'AMMINISTRATORE)

' PORTA L'UTENTE NELLA PAGINA

' CHAT.ASP

Response.Redirect "chat.asp"

End IF

%>

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 127 di 161

Capitolo 14

Conta click

Vediamo come realizzare un semplice conta click che ci permetta di tenere sotto

controllo i click del nostro sito.

La realizzazione dello script si può dividere in:

Creazione database

Creazione pagine per registrare i click

Creazione pagine per l’amministratore

Creazione Database

Per la creazione del database ho usato il famoso Microsoft Access, versione 2000

(presente nel pacchetto Microsoft Office).

Avviamo Access e selezioniamo la creazione di un database vuoto:

Quindi diamo un nome al nostro database, che conterrà i nostri dati, e salviamolo col

nome di “database.mdb”.

Creiamo quindi una tabella in visualizzazione struttura:

... con i seguenti campi:

Id – Tipo Campo: Contatore

Url - Tipo Campo: Memo (conterrà l’url)

Clicks - Tipo Campo: Numerico (conterrà i click sul link)

Chiudiamo la creazione della tabella (con la X in alto a destra della creazione della

tabella) e, rispondendo affermativamente alle domande che ci verranno poste,

salviamola col nome di “Click”.

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 128 di 161

Creazione pagine per registrare i click

Il sistema che creeremo dovrà funzionare in questo modo: ad una pagina

(vai_click.asp) viene passata tramite una querystring (url) l’url della pagina o del

sito di cui si vuole contare i click, quindi si farà una verifica sul database se l’url esiste

si aggiornerà semplicemente il numero dei click altrimenti verrà aggiunto il nuovo url

e il suo primo click, infine si verrà portati nell’url passato.

Ecco il codice della pagina “Vai_click.asp”:

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

<%

' PERCORSO DEL DATABASE

url_DB = "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.mappath("/mdbdatabase/

database.mdb")

Set Conn = Server.CreateObject("ADODB.Connection")

conn.Open url_DB

Set RecSet = Server.CreateObject("ADODB.Recordset")

' PRELEVA L'URL PASSATO DALLA QUERYSTRING "URL"

Url = Replace(Request.QueryString("url") , "'", "''")

' SE E' STATO PASSATO REALMENTE UN URL:

IF Url <> "" then

SQL = "SELECT * FROM CLICK WHERE URL = '" & URL &"'"

RecSet.Open SQL, Conn, adOpenStatic, adLockOptimistic

' CONTROLLA SE L'URL E' PRESENTE

If RecSet.Eof = False Then

' L'URL E' PRESENTE

' DEVE QUINDI AGGIORNARE SOLO I CLICK

click_attuali = RecSet("clicks")

' AGGIORNA I CLICK NEL DB

RecSet("clicks") = click_attuali + 1

Else

' URL NON PRESENTE, LO AGGIUNGE E AGGIUNGE PURE IL CLICK

RecSet.Addnew

RecSet("url") = url

RecSet("clicks") = 1

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 129 di 161

End IF

' AGGIORNA IL DB E CHIUDE LA CONNESSIONE

RecSet.Update

RecSet.Close

End IF

Conn.Close

IF url <> "" then

' PORTA L'UTENTE NEL SITO O NELLA PAGINA DELL'URL

Response.Redirect Url

End IF

%>

Per contare i click ad una determinata pagina o ad un link dovremo scrivere un link di

questo tipo:

http://nostro sito/vai_click.asp?url=http://url di cui occorre contare i click

In questo modo verranno contati i click su quel determinato url.

Creazione pagine per l’amministratore

Passiamo ora alla creazione delle pagine per l’amministratore per la gestione dei click!

Creiamo una cartella “admin” e creiamo adesso due file (che verranno appunto

inseriti in questa cartella):

Index.asp (Che identifica l’utente come amministratore)

Gestione_Click.asp (Per visualizzare/eliminare i click sui link)

Ecco il codice della pagina “index.asp”:

<%

' CONTROLLA SE SONO STATI INSERITI DATI NEI DUE CAMPI

' DI LOGIN USERNAME E PASSWORD CORRETTI

' USERNAME AMMINISTRATORE

username = "admin"

' PASSWORD AMMINISTRATORE

password = "admin"

IF Lcase(Request.Form("username")) = Lcase(username) and

Lcase(Request.Form("password")) = Lcase(password) then

' I DATI SONO ESATTI E SI VIENE IDENTIFICATI COME AMMINISTRATORE

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 130 di 161

' E PORTATI NELLA PAGINA "GESTIONE_CLICK.ASP"

session("amministratore") = true

Response.Redirect "Gestione_Click.asp"

End if

%>

<html>

<head>

<title>GESTIONE CLICK</title>

</head>

<body>

<p align="center">&nbsp;</p>

<p align="center"><b><font size="4" face="Verdana">Gestione

Click!</font></b></p>

<form method="POST" action="index.asp">

<div align="center">

<center>

<table border="0" cellpadding="0" cellspacing="0" width="39%">

<tr>

<td width="50%"><font face="Verdana" size="2">Username:</font></td>

<td width="50%"><input type="text" name="username" size="20"></td>

</tr>

<tr>

<td width="50%"><font face="Verdana" size="2">Password:</font></td>

<td width="50%"><input type="password" name="password"

size="20"></td>

</tr>

<tr>

<td width="100%" colspan="2" height="5">

</td>

</tr>

<tr>

<td width="100%" colspan="2">

<p align="center"><input type="submit" value="Invia" name="B1"><input

type="reset" value="Reimposta" name="B2"></td>

</tr>

</table>

</center>

</div>

</form>

<p align="center">&nbsp;</p>

</body>

</html>

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 131 di 161

Ecco la pagina “Gestione_Click.asp”, in questa pagina vengono visualizzati i link con

i loro click e accanto un link per eliminare l’url e suoi click dal database:

<%

' CONTROLLA SE SI E' IDENTIFICATI COME AMMINISTRATORI

IF session("amministratore") <> true then

' NON SI E' L'AMMINISTRATORE

' PORTA L'UTENTE NELLA PAGINA DI LOGIN

Response.Redirect "index.asp"

End IF

%>

<html>

<head>

<title>GESTIONE CLICK</title>

</head>

<body>

<p><b><font face="Verdana" size="4">&gt; Gestione Click</font></b></p>

<!-- #INCLUDE FILE="../adovbs.inc" -->

<%

' PERCORSO DEL DATABASE

url_DB = "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.mappath("/mdbdatabase/

database.mdb")

Set Conn = Server.CreateObject("ADODB.Connection")

conn.Open url_DB

' LEGGE DALLA QUERYSTRING "OPERAZIONE"

' QUELLO CHE DEVE FARE

IF Request.QueryString("operazione") = "elimina" Then

' DEVE CANCELLARE UN URL DAL DB

' APRE LA CONNESSIONE AL DATABASE

Set RecSet = Server.CreateObject("ADODB.Recordset")

SQL = "SELECT * FROM CLICK WHERE ID = " & Request.QueryString("id") &""

RecSet.Open SQL, Conn, adOpenStatic, adLockOptimistic

IF RecSet.Eof = False then

' L'URL E' PRESENTE E LO CANCELLA

RecSet.Delete

' AGGIORNA IL DB E CHIUDE LA CONNESSIONE AL DB

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 132 di 161

RecSet.Update

End IF

RecSet.Close

End IF

' NUMERO DI LINK PER PAGINA

iPageSize = 25

If Request.QueryString("page") = "" Then

iPageCurrent = 1

Else

iPageCurrent = CInt(Request.QueryString("page"))

End If

If Request.QueryString("order") = "" Then

strOrderBy = "id"

Else

strOrderBy = Request.QueryString("order")

End If

Set RS = Server.CreateObject("ADODB.Recordset")

' FA LA RICHIESTA AL DATABASE

sql = "SELECT * FROM CLICK ORDER BY " & strOrderBy & " DESC;"

RS.Open sql, conn, adOpenKeyset

RS.PageSize = iPageSize

RS.CacheSize = iPageSize

iPageCount = RS.PageCount

If iPageCurrent > iPageCount Then iPageCurrent = iPageCount

If iPageCurrent < 1 Then iPageCurrent = 1

' NESSUN LINK PRESENTE -> VIENE VISUALIZZATO UN MESSAGGIO CHE INFORMA

CHE NON E' PRESENTE

' NEMMENO UN LINK NEL DB

If iPageCount = 0 Then

%><hr>

<p align="center"><b><font size="2" face="Verdana">Nessun click presente nel

database!</font></b></p>

<hr>

<%

Else

' ALTRIMENTI

%>

<table border="0" cellpadding="0" cellspacing="0" width="100%">

<tr>

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 133 di 161

<td width="76%" bgcolor="#C3D3DB" align="center"><font face="Verdana"

size="2"><b>Nome

Url</b></font></td>

<td width="11%" bgcolor="#C3D3DB" align="center"><font face="Verdana"

size="2"><b>Click</b></font></td>

<td width="13%" bgcolor="#C3D3DB">&nbsp;</td>

</tr>

<%

RS.AbsolutePage = iPageCurrent

iRecordsShown = 0

' MOSTRA I LINK, CON I LORO CLICK

Do While iRecordsShown < iPageSize And Not RS.EOF

%>

<tr>

<td width="76%" align="center">

<p align="left"><font face="Verdana" size="2"><a href="<%=RS("url")%>"

target = "_blanc"><%=RS("url")%></a></font></td>

<td width="11%" align="center"><font face="Verdana"

size="2"><%=RS("clicks")%></font></td>

<td width="13%" bgcolor="#C3D3DB">

<p align="center"><font face="Verdana" size="2"><a

href="Gestione_Click.asp?operazione=elimina&amp;id=<%=RS("id")%>"><b>Cance

lla</b></a></font></td>

</tr>

<%

' COMPLETA LA VISUALIZZAZIONE DEI LINK E CHIUDE LA CONNESSIONE

' AL DATABASE

iRecordsShown = iRecordsShown + 1

RS.MoveNext

Loop

%>

</table>

<%

End If

RS.Close

Set RS = Nothing

Conn.Close

%><center>

<%

' MOSTRA IL NUMERO DELLE PAGINE

' DATO CHE VERRANNO MOSTRATI

' IN QUESTO ESEMPIO 25 URL PER PAGINA

For x=1 to iPageCount

%>

<font face="Verdana" size="2">[ <b> <a

href="Gestione_click.asp?page=<%=x%>&order=<%=

Server.URLEncode(strOrderBy) %>"><%=x%></a></b> ]</font>

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 134 di 161

<%

next

%>

</body></html>

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 135 di 161

Capitolo 15

Numeri, frasi, immagini e… casuali!

In un sito in ASP può risultare utile far visualizzare frasi, immagini o altro, in modo

casuale, ad ogni aggiornamento (“reload”) di una pagina.

Partiamo da come generare un numero casuale ad ogni reload (aggiornamento,

caricamento) di una pagina ASP, per poi passare alle frasi e alle immagini casuali.

Generare un numero random

Ecco il semplice script per la generazione di un numero casuale, ad ogni

aggiornamento di una pagina in ASP:

<%

' FUNZIONE PER LA GENERAZIONE

' DEL NUMERO RANDOM

Randomize()

' NUMERO MASSIMO, ENTRO IL QUALE

' DEVE TROVARSI IL NUMERO CASUALE (RANDOM)

numero_massimo = 5

' RESTITUISCE IL NUMERO CASUALE

numero = CInt(numero_massimo * Rnd())

' SE IL NUMERO CASUALE GENERATO

' E' UGUALE A ZERO (0), CAMBIA IL VALORE

' DEL NUMERO CASUALE (0) IN UNO (1)

IF numero = 0 Then

numero = 1

End IF

' MOSTRA IL NUMERO CASUALE

' CHE E' STATO GENERATO

Response.Write numero

%>

Lo script è molto semplice. Sulla sua base, creeremo lo script che mostrerà una frase

diversa (... o una immagine) ad ogni aggiornamento della nostra pagina ASP.

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 136 di 161

Frasi casuali

Ecco, con semplici modifiche al precedente script ASP, come è possibile far

visualizzare frasi random (casuali) ad ogni caricamento di una pagina ASP:

<%

' FUNZIONE PER LA GENERAZIONE

' DEL NUMERO RANDOM

Randomize()

' NUMERO MASSIMO, ENTRO IL QUALE

' DEVE TROVARSI IL NUMERO CASUALE (RANDOM)

numero_massimo = 3

' RESTITUISCE IL NUMERO CASUALE

numero = CInt(numero_massimo * Rnd())

' SE IL NUMERO CASUALE GENERATO

' E' UGUALE A ZERO (0), CAMBIA IL VALORE

' DEL NUMERO CASUALE (0) IN UNO (1)

IF numero = 0 Then

numero = 1

End IF

' FINO A QUESTO PUNTO

' LO SCRIPT PRECEDENTE E' LO STESSO

' DI QUELLO PER LA GENERAZIONE DEI NUMERI CASUALI...

'

' DA QUA INIZIA INVECE IL VERO SCRIPT PER LE FRASI RANDOM:

Select Case numero

Case 1:

frase = "Messaggio 1"

Case 2:

frase = "Messaggio 2"

Case 3:

frase = "Messaggio 3"

End Select

' COMMENTIAMO QUELLO CHE SI E' AGGIUNTO

' ALLO SCRIPT PER LA GENERAZIONE

' DEI NUMERI CASUALI, PER LA VISUALIZZAZIONE DI FRASI RANDOM...

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 137 di 161

' E' STATO SEMPLICEMENTE INSERITO UN COSTRUTTO "Select Case" PER

' LA SELEZIONE DELLE FRASI RANDOM

'

' ALL'INIZIO DELLO SCRIPT VIENE GENERATO UN NUMERO

' CASUALE, POI QUI, NEL COSTRUTTO "Select Case" VENGONO

' FATTE DELLE SPECIE DI CONDIZIONI:

'

' Case 1:

' frase = "Messaggio 1"

'

' SE IL NUMERO GENERATO E' UGUALE A UNO, LA VARIABILE

' FRASE SARA' UGUALE A "Messaggio 1"

' IN QUESTO MODO SI AVRA' LA SELEZIONE DELLA FRASE

' RANDOM DA VISUALIZZARE

'

' QUINDI QUANDO DOVREMO INSERIRE UNA NUOVA FRASE RANDOM

' (CASUALE) DOVREMO AUMENTARE DI UNO (+1) LA VARIABILE

' "Numero_massimo" E INSERIRE NEL SELECT CASE:

'

' Case x:

' frase = "Frase random"

'

' DOVE "x" OCCORRE METTERE IL NUMERO DELLA FRASE RANDOM

'

' VIENE INFINE MOSTRATA LA FRASE RANDOM

' (CONTENUTA NELLA VARIABILE "FRASE")

Response.Write Frase

%>

Questo script, ad esempio, può essere utilizzato per la visualizzazione di consigli,

trucchi e suggerimenti nell’home page del nostro sito.

Potrebbero esserci delle frasi molto lunghe, che non entrano nella sola riga della

variabile “frase”, come fare? Vediamolo subito!

Basterà utilizzare semplicemente la stringa di concatenazione “&_”:

frase = "Salvatore Aranzulla si occupa di programmazione e divulgazione da molti

anni. "&_

" Egli programma in ASP e in Visual Basic."

La frase verrà visualizzata intera, però così il codice ASP risulta più ordinato.

E’ possibile utilizzare nelle frasi casuali anche i tag HTML, per esempio se si vuole

inserire un link ad un sito web, basta semplicemente, inserire:

frase = "<a href=""http://www.miosito.it"">Mio sito</a>"

Da ricordare, comunque, è di inserire due virgolette alte ("") al posto di una ("),

altrimenti verrà generato un errore.

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 138 di 161

Immagini casuali

Può risultare utile in un sito (ma soprattutto simpatico) far visualizzare delle immagini

casuali ad ogni aggiornamento della pagina ASP (ad esempio nell’home page del sito).

Ecco lo script per visualizzare le immagini casuali (si tratta di una semplice modifica

allo script per la generazioni di frasi casuali):

<%

' FUNZIONE PER LA GENERAZIONE

' DEL NUMERO RANDOM

Randomize()

' NUMERO MASSIMO, ENTRO IL QUALE

' DEVE TROVARSI IL NUMERO CASUALE (RANDOM)

numero_massimo = 4

' RESTITUISCE IL NUMERO CASUALE

numero = CInt(numero_massimo * Rnd())

' SE IL NUMERO CASUALE GENERATO

' E' UGUALE A ZERO (0), CAMBIA IL VALORE

' DEL NUMERO CASUALE (0) IN UNO (1)

IF numero = 0 Then

numero = 1

End IF

' FINO A QUESTO PUNTO

' LO SCRIPT PRECEDENTE E' LO STESSO

' DI QUELLO PER LA GENERAZIONE DEI NUMERI CASUALI...

'

' DA QUA INIZIA INVECE IL VERO SCRIPT PER LE IMMAGINI RANDOM:

Select Case numero

Case 1:

img = "1.jpg"

Case 2:

img = "colline.jpg"

Case 3:

img = "3.jpg"

Case 4:

img = "4.jpg"

End Select

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 139 di 161

' COMMENTIAMO QUELLO CHE SI E' AGGIUNTO

' ALLO SCRIPT PER LA GENERAZIONE

' DEI NUMERI CASUALI, PER LA VISUALIZZAZIONE DELLE IMMAGINI RANDOM...

' E' STATO SEMPLICEMENTE INSERITO UN COSTRUTTO "Select Case" PER

' LA SELEZIONE DELLE IMMAGINI RANDOM

'

' ALL'INIZIO DELLO SCRIPT VIENE GENERATO UN NUMERO

' CASUALE, POI QUI, NEL COSTRUTTO "Select Case" VENGONO

' FATTE DELLE SPECIE DI CONDIZIONI:

'

' Case 1:

' img = "1.jpg"

'

' SE IL NUMERO GENERATO E' UGUALE A UNO, LA VARIABILE

' "IMG" (CHE CONTIENE IL NOME DELL'IMMAGINE) SARA'

' UGUALE, IN QUESTO CASO, A "1.jpg"

' IN QUESTO MODO SI AVRA' LA SELEZIONE DELL'IMMAGINE

' RANDOM DA VISUALIZZARE

'

' QUINDI QUANDO DOVREMO INSERIRE UNA NUOVA IMMAGINE RANDOM

' (CASUALE) DOVREMO AUMENTARE DI UNO (+1) LA VARIABILE

' "Numero_massimo" E INSERIRE NEL SELECT CASE:

'

' Case x:

' img = "nome img.estensione"

'

' DOVE "x" OCCORRE METTERE IL NUMERO DELL'IMMAGINE RANDOM

'

' INSERIRE QUA IL PERCORSO DELLA CARTELLA

' DOVE SONO CONTENUTE LE IMMAGINI..

' (AD ESEMPIO "/IMG_RANDOM/")

'

Cartella = "/img_random/"

'

' VIENE INFINE MOSTRATA L'IMMAGINE

' (VIENE IN PRATICA RICOSTRUITO IL TAG

' "<IMG ..>" PER VISUALIZZARE L'IMMAGINE...

' IL PERCORSO DELL'IMMAGINE SARA' UGUALE A

' CARTELLA + IMMAGINE RANDOM)

Response.Write "<img src=""" & CARTELLA & IMG &""">"

%>

Dove inserire questi script?

Per la visualizzazione di immagini/frasi casuali occorrerà inserire questi script nel

punto in cui essi devono apparire e fare le opportune modifiche...

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 140 di 161

Capitolo 16

Parole indesiderate

Nel nostro sito, con il guestbook, con la chat o altro, può accadere che gli utenti

inseriscano della parole indesiderate, delle parolacce, nei messaggi pubblici, che

verranno visualizzati poi a tutti gli utenti del sito.

Per evitare tutto questo, possiamo creare una funzione che rimpiazzi le parolacce con

degli asterischi, al momento della loro visualizzazione.

Ecco il codice della nostra funzione, che abbiamo chiamato

PAROLE_INDESIDERATE”:

<%

Function PAROLE_INDESIDERATE(STRINGA)

' DICHIARA L'ARRAY "PAROLACCIA",

' CHE CONTERRA' LE PAROLE INDESIDERATE

' DA SOSTITUIRE, IN PARTE, CON DEGLI

' ASTERISCHI (*)

dim parolaccia(2)

' IL NUMERO INSERITO FRA PARENTESI

' (IN QUESTO CASO IL NUMERO 2) CORRISPONDE

' AL NUMERO DI PAROLACCE INSERITE

' DA SOSTITUIRE,

' QUINDI PER OGNI PAROLACCIA DA SOSTITUIRE

' CHE INSERIREMO,

' DOVREMO INCREMENTARE QUESTO NUMERO

' PER AGGIUNGERE UNA PAROLA INDESIDERATA

' (DA SOSTITUIRE, OVVIAMENTE), SCRIVEREMO SOTTO

' LE PAROLACCE GIA' INSERITE:

' parolaccia(Numero seguente) = "parolaccia"

'

' RICORDIAMOCI DI INCREMENTARE IL PRECEDENTE NUMERO

' (L'INDICE DELL'ARRAY -> dim parolaccia(X))

parolaccia(0) = "cretino"

parolaccia(1) = "stupido"

parolaccia(2) = "bastardo"

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 141 di 161

' -> -> -> -> -> -> -> -> -> ->

' DA QUI INIZIA IL VERO CUORE

' DELLA FUNZIONE

' -> -> -> -> -> -> -> -> -> ->

' SE LA LUNGHEZZA DELLA STRINGA PASSATA

' E' MAGGIORE DI 0, EFFETTUA IL CONTROLLO

' E LE EVENTUALI SOSTITUZIONI DELLE PAROLE INDESIDERATE

IF Len(Stringa) > 0 Then

For x = 0 to Ubound(parolaccia)

' RICOSTRUISCE LA STRINGA CON LA QUALE

' DOVRA' ESSERE SOSTITUITA LA PAROLA INDESIDERATA

' (PRIMA E SECONDA LETTERA PAROLACCIA - ASTERISCHI - ULTIME DUE LETTERE

PAROLACCIA)

asterischi = null

For n = 0 to Len(Trim(parolaccia(x)))-5

asterischi = asterischi & "*"

Next

' PAROLA CON LA QUALE VERRA'

' SOSTITUITA LA PAROLACCIA:

parola_sostituta = Left(parolaccia(x), 2) & asterischi & Right(parolaccia(x), 2)

' SOSTITUISCE LA PAROLACCIA

Stringa = Replace(stringa, parolaccia(x), parola_sostituta)

Next

' RILASCIA IL CONTENUTO

' "RIPULITO" DALLE PAROLE INDESIDERATE

PAROLE_INDESIDERATE = Stringa

End IF

End Function

%>

Questa funzione rimpiazzerà in parte le parolacce, cioè al posto della parolaccia

visualizzerà: le prima due sue lettere iniziali, degli asterischi, e le sue due ultime

lettere finali.

Nulla però ci vieta di sostituire completamente la parola con degli asterischi. In questo

caso dovremo fare delle modifiche a queste righe:

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 142 di 161

asterischi = null

For n = 0 to Len(Trim(parolaccia(x)))-5

asterischi = asterischi & "*"

Next

' PAROLA CON LA QUALE VERRA'

' SOSTITUITA LA PAROLACCIA:

parola_sostituta = Left(parolaccia(x), 2) & asterischi & Right(parolaccia(x), 2)

' SOSTITUISCE LA PAROLACCIA

Stringa = Replace(stringa, parolaccia(x), parola_sostituta)

... che dovranno essere sostituite con queste:

asterischi = null

For n = 0 to Len(Trim(parolaccia(x)))-1

asterischi = asterischi & "*"

Next

' SOSTITUISCE LA PAROLACCIA

Stringa = Replace(stringa, parolaccia(x), asterischi)

A questo punto sorge una domanda: Come utilizzare (cioè richiamare) la funzione?

Semplice!

Basterà scrivere semplicemente:

<%=PAROLE_INDESIDERATE(STRINGA DA PULIRE)%>

Ovviamente, la nostra funzione dovrà essere inserita nella pagina nella quale la si

richiama.

Cioè, se io richiamo la funzione nella pagina “pagina.asp”, in questa pagina dovrò

inserire il codice della funzione PAROLE_INDESIDERATE.

Per velocizzare il tutto creiamo la pagina “parolacce.asp” e inseriamo al suo interno

il contenuto della nostra funzione. Collochiamo questa pagina nella cartella nella quale

è contenuto il nostro sito.

In questo modo, basterà inserire solamente la seguente riga, all’inizio della pagina

nella quale si vuole utilizzare la nostra funzione, per poterla, appunto, utilizzare:

<!-- #INCLUDE FILE="parolacce.asp" -->

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 143 di 161

Applichiamo la pulizia delle parole indesiderate al nostro guestbook

Nella visualizzazione dei messaggi del nostro GuestBook (che avviene nella pagina

guestbook.asp) inseriamo all’inizio della pagina il seguente include (che include la

pagina “parolacce.asp”, precedentemente creata):

<!-- #INCLUDE FILE="parolacce.asp" -->

E trasformiamo la riga che visualizza i messaggi del guestbook:

<%=RS("messaggio")%>

In:

<%=PAROLE_INDESIDERATE(RS("messaggio"))%>

In questo modo verrà attivata la funzione di pulizia delle parolacce.

Applichiamo la pulizia delle parole indesiderate alla nostra chat

Interveniamo in questo caso, invece, nella pagina “centro_chat.asp”, che visualizza i

messaggi della chat. Includiamo sempre la pagina “parolacce.asp” e trasformiamo la

riga che visualizza i messaggi della chat:

Response.Write Replace(Application("messaggi"), "@!/", "<br>")

In:

Response.Write PAROLE_INDESIDERATE(Replace(Application("messaggi"), "@!/",

"<br>"))

Abbiamo così risolto il problema delle parole indesiderate!

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 144 di 161

Capitolo 17

Matematica & ASP?

Ebbene sì, la matematica e l’ASP vanno d’accordo, infatti l’ASP è in grado di eseguire

operazioni e confronti fra numeri!

Somma

<%

numero1 = 2

numero2 = 3

Response.Write numero1+numero2

%>

Otterremo a video, in questo caso, il numero 5.

Sottrazione

<%

numero1 = 3

numero2 = 2

Response.Write numero1-numero2

%>

Otterremo a video, in questo caso, il numero 1.

Moltiplicazione

<%

numero1 = 3

numero2 = 2

Response.Write numero1*numero2

%>

Occorre stare molto attenti per la moltiplicazione, infatti, occorre sostituire il segno di

moltiplicazione (x) con l’asterisco (*). In questo caso, otterremo a video il numero 6.

Sottrazione

<%

numero1 = 3

numero2 = 2

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 145 di 161

Response.Write numero1/numero2

%>

Anche in questo caso occorre stare molto attenti perché occorre sostituire il segno di

divisione (:) con /

In questo caso, otterremo a video il numero 1,5.

Elevamento a potenza

Ebbene sì l’ASP è anche in grado di eseguire l’elevamento a potenza:

<%

base = 3

esponente = 2

Response.Write base^esponente

%>

Espressioni aritmetiche semplici

L’ASP è anche in grado di eseguire delle espressioni semplici, anche con le parentesi

tonde:

<%

' QUESTA E' UNA ESPRESSIONE MOLTO SEMPLICE

Response.Write (5+2)*2

Response.Write "<br>"

' QUESTA E' UNA ESPRESSIONE UN PO' PIU' COMPLESSA (IL TUTTO VIENE POI

ELEVATO AL QUADRATO!)

Response.Write ((5+2)*2)^2

%>

Può capitare però che il risultato di una di queste operazioni sia un numero con la

virgola, per evitare tutto questo e visualizzare solo la parte intera, si usa:

<%

numero1 = 3

numero2 = 2

Response.Write int(numero1/numero2)

%>

In questo modo arrotondiamo il numero per difetto, avremo in questo caso mostrato a

video, infatti, il numero 1, per arrotondare, invece, per eccesso si usa:

<%

numero1 = 3

numero2 = 2

Response.Write cint(numero1/numero2)

%>

... avremo infatti in questo caso mostrato a video il numero 2.

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 146 di 161

Ovviamente, combinando opportunamente le varie operazioni si possono per esempio

trovare l’IVA, la percentuale e altro partendo da un numero

<%

' CALCOLO COSTO DEL PRODOTTO CON IVA DEL 20%

costo_prodotto = 30 ' Il costo del prodotto non deve essere seguito da il simbolo della

valuta, per esempio per l’euro (€)

iva = 20 ' Il simbolo di percentuale (%) si toglie.

Response.Write "Il costo del prodotto, compresa l'IVA del 20%, è di "

Response.Write (costo_prodotto*iva)/100+costo_prodotto

Response.Write " €"

%>

Infine da ricordare che l’ASP è in grado di eseguire anche confronti fra numeri:

Maggiore/Minore di

<%

numero1 = 10

numero2 = 11

IF numero1 > numero2 then

Response.Write "Il primo numero (" & numero1 &") è maggiore del secondo (" &

numero2 &")."

else

Response.Write "Il secondo numero (" & numero2 &") è maggiore del primo (" &

numero1 &")."

End IF

%>

In questo caso otterremo a video la frase “Il secondo numero (11) è maggiore del

primo (10).”.

Uguale a

Modifichiamo ulteriormente lo script ASP precedente:

<%

numero1 = 10

numero2 = 10

IF numero1 > numero2 then

Response.Write "Il primo numero (" & numero1 &") è maggiore del secondo (" &

numero2 &")."

elseIF numero1 < numero2 then

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 147 di 161

Response.Write "Il secondo numero (" & numero2 &") è maggiore del primo (" &

numero1 &")."

elseIF numero1 = numero2 then

Response.Write "Il primo numero (" & numero1 &") è uguale al secondo (" & numero2

&")."

end if

%>

Ecco quindi come utilizzare in ASP anche la matematica (anche se molti la odiano :P).

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 148 di 161

Capitolo 18

Alcune funzioni di ASP

Numerose sono le funzioni che possiede l’ASP. Spesso ci troviamo a scrivere righe di

codice inutile, non sapendo che esistono delle funzioni che svolgono lo stesso compito

scrivendo una semplice riga! Analizziamo le funzioni di ASP che possono risultare utili

per il nostro lavoro.

Replace

La funzione Replace serve, come dice il nome, a rimpiazzare una parte di una

stringa passata con un’altra, facciamo adesso un esempio pratico:

abbiamo creato una chat in cui vogliamo sostituire le faccine (ad esempio :-), ;-),

ecc..) con delle immagini, molto più belle da vedere, che fare? Tutto ciò è possibile?

Certo con la funzione Replace!

Ad esempio se i messaggi vengono salvati nella variabile “Messaggio” e vogliamo

sostituire la faccina “:-)” con la sua immagine (ad esempio chiamata “faccina1.gif” e

contenuta nella cartella “images” del nostro sito) scriveremo:

<%

' ...

Messaggio = "ciao :-)"

' RIMPIAZZA ":-)" CON LA SUA IMMAGINE

Messaggio = Replace(Messaggio, ":-)" , "<img src=""images/faccina1.gif"">")

Response.Write Messaggio

' ...

%>

Quindi, Replace serve a rimpiazzare parte di una stringa con un’altra.

Questa funzione ad esempio può essere utile per rimpiazzare parolacce in guestbook,

forum con degli asterischi. Vi rimando, comunque, per fare tutto questo ad un altro

mio articolo, in cui si spiega come creare una funzione che rimpiazza le parolacce con

degli asterischi (sempre contenuto in questo libro open source).

Ucase

La funzione Ucase serve a rendere il contenuto di una stringa passata in

maiuscolo. Spieghiamoci meglio con un esempio: supponiamo di dover mostrare a

video il contenuto della variabile “Messaggio” tutto in maiuscolo, mentre il testo è

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 149 di 161

scritto in parte in maiuscolo e in parte in minuscolo, come fare? Semplice usiamo la

funzione Ucase:

<%

' ...

Messaggio = "Ciao! Mi rieSCI a mettere TutTO in MAIUSCOLO?"

' IL TESTO DELLA VARIABILE MESSAGGIO VERRA' MESSO TUTTO IN MAIUSCOLO

Messaggio = Ucase(Messaggio)

' MOSTRA IL MESSAGGIO (ORA TUTTO IN MAIUSCOLO)

Response.Write Messaggio

' ...

%>

Lcase

La funzione Lcase è la “funzione gemella” di Ucase, infatti mentre quest’ultima serve

a rendere il testo maiuscolo, Lcase, lo rende minuscolo!

Esempio:

<%

' ...

Messaggio = "Ciao! Mi rieSCI a mettere TutTO in MInuSCOlo?"

' IL TESTO DELLA VARIABILE MESSAGGIO VERRA' MESSO TUTTO IN MINUSCOLO

Messaggio = Lcase(Messaggio)

' MOSTRA IL MESSAGGIO (ORA TUTTO IN MINUSCOLO)

Response.Write Messaggio

' ...

%>

Left

La funzione Left serve a prelevare una parte di una stringa passata, dato un

certo numero di lettere da sinistra, spieghiamoci meglio con un esempio:

supponiamo di dover prelevare da una stringa (chiamata “file”) che contiene il nome

di un file (“file.asp”) solo il nome di questo file (quindi in questo caso “file”), come

fare? Semplice, usiamo la funzione Left!:

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 150 di 161

<%

' ...

file = "file.asp"

' NOME_FILE = PRELEVA DA SINISTRA I PRIMI QUATTRO CARATTERI DELLA

VARIABILE FILE

nome_file = Left(file, 4)

' MOSTRA IL NOME DEL FILE

Response.Write nome_file

' ...

%>

Right

La funzione Right è “il gemello della funzione Left”¸infatti questa funzione serve a

prelevare una parte di una stringa passata, dato un certo numero di lettere,

in questo caso, da destra, riprendiamo l’esempio della funzione Left (mostrare il

nome del file) e facciamo adesso invece visualizzare l’estensione del file (“.asp”) della

variabile “file”:

<%

' ...

file = "file.asp"

' ESTENSIONE_FILE = PRELEVA DA DESTRA I PRIMI QUATTRO CARATTERI

(L'ESTENSIONE)

' DALLA VARIABILE FILE

estensione_file = Right(file, 4)

' MOSTRA L'ESTENSIONE DEL FILE

Response.Write estensione_file

' ...

%>

Len

La funzione Len serve per scoprire la lunghezza della stringa passata. Essa ad

esempio può essere utile per verificare se una variabile è vuota, facendo un controllo

sulla sua lunghezza:

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 151 di 161

<%

' ...

stringa = "file.asp"

' LUNGHEZZA_VARIABILE = LUNGHEZZA (IN CARATTERI) DELLA VARIABILE

"STRINGA"

lunghezza_variabile = Len(stringa)

' MOSTRA LA LUNGHEZZA DELLA VARIABILE (IN QUESTO CASO IL NUMERO 9)

Response.Write lunghezza_variabile

' CONDIZIONE PER VERIFICARE SE LA VARIABILE "STRINGA" CONTIENE UN TESTO

' SE LA LUNGHEZZA DELLA VARIABILE STRINGA (lunghezza_variabile) E' MAGGIORE

DI ZERO :

IF lunghezza_variabile > 0 Then

' VARIABILE "STRINGA" CONTIENE UN TESTO

Response.Write "PIENA"

Else

' ALTRIMENTI

Response.Write "VUOTA"

End IF

' ...

%>

Trim

Spesso in queste pagine (ad esempio per la creazione della chat) è stata usata la

funzione TRIM, questa funzione serve per eliminare lo spazio iniziale e finale che

potrebbero esserci in una stringa. Facciamo un esempio pratico:

<%

variabile = " ciao "

Response.Write TRIM(variabile)

%>

Verrà visualizzato “ciao”, senza lo spazio iniziale e quello finale.

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 152 di 161

StrReverse

Fra le varie “funzioni strane” di ASP possiamo ricordare “StrReverse”, si tratta di una

funzione sicuramente poco conosciuta che, una volta passata una stringa, la

restituisce con l'ordine dei caratteri invertito, in parole povere al contrario:

<%

' ...

stringa = "OTELMA"

' MOSTRA IN QUESTO CASO "AMLETO" (IL VALORE DELLA VARIABILE "STRINGA" AL

CONTRARIO)

Response.Write StrReverse(stringa)

' ...

%>

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 153 di 161

Capitolo 19

Le date e gli orari

In pagine ASP può risultare spesso molto utile mostrare a video la data e/o l’ora

corrente. Per mostrare la data in una pagina ASP basta inserire semplicemente:

<%=Date()%>

Mentre per mostrare l’ora corrente:

<%=Time()%>

Si può anche citare la funzione Now() (<%=Now()%>) che visualizza assieme data

e ora.

In questo modo però mostreremo semplicemente data e ora, vediamo invece come

visualizzare qualcosa di più preciso, tipo solo il giorno, il mese, l’anno corrente, cioè

come gestire e formattare al meglio le date e gli orari in base alle nostre esigenze.

Formattare le date

Esiste una funzione in ASP per scegliere il tipo di visualizzazione della data e dell'ora,

si tratta della funzione FormatDateTime().

La sua sintassi è:

FormatDateTime (data/ora, argomento)

In data va la data da formattare, se occorre formattare la data corrente si può

inserire semplicemente Date(), o Time() per l’orario, in argomento invece vanno:

VbLongDate

vbShortTime

Il primo, VbLongDate, visualizza la data nel formato esteso, cioè giorno numero

giorno mese anno, ad esempio “martedì 21 ottobre 2003”; il secondo,

vbShortTime, invece, visualizza l'ora in formato abbreviato, cioè “ora.minuti”, ad

esempio “15.43

Per esempio scriveremo:

<%=FormatDateTime (time(), vbShortTime)%>

Per visualizzare l’ora corrente nel formato abbreviato.

Giorno, mese e … anno!

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 154 di 161

E' possibile da una data risalire al mese, all'anno, al giorno o da un orario all’ora, ai

minuti e ai secondi... vediamo come, con queste funzioni di ASP.

Year(data)

Risale all’anno della data

Month(data)

Risale al mese della data (in formato numerico)

Day(data)

Risale al giorno della data

Hour(ora)

Risale all’ora dell’orario

Minute(ora)

Risale ai minuti dell’orario

Second(ora)

Risale ai secondi dell’orario

Ad esempio per visualizzare il giorno della data attuale inseriremo:

<%=Day(Date())%>

Una funzione particolare che riguarda le date è la funzione MonthName(), che

permette di mostrare il nome del mese della data. La sua sintassi è:

MonthName(numero del mese, tipo nome mese)

Numero del mese è il numero del mese,mentre tipo nome mese può essere uguale

a:

True

Restituisce il nome del mese abbreviato

False

Restituisce il nome del mese intero

Possiamo unire MonthName() e Month() in:

<%=MonthName(Month(data), tipo nome mese)%>

Per visualizzare il nome del mese corrente.

Differenza fra date

Capita spesso in ASP di dover eseguire una differenza fra date, facendo una semplice

sottrazione fra la prima data e la seconda (data1 – data2) ci viene dato un errore,

perché non si tratta di numeri ma di date, in cui si usa la funzione DateDiff().

La sua sintassi:

DateDiff(tipo sottrazione, prima data, seconda data)

In prima data e in seconda data, vanno ovviamente inserite le date due date da

sottrarre (seconda data – prima data), in tipo sottrazione dobbiamo invece inserire:

yyyy

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 155 di 161

Differenza fra anni

m

Differenza fra mesi

d

Differenza fra giorni

Sempre con la stessa funzione è possibile eseguire anche una differenza fra orari,

utilizzeremo in questo caso:

h

Differenza fra ore

n

Differenza fra minuti

s

Differenza fra secondi

Facciamo un esempio di questa funzione:

<%=DateDiff("yyyy", "21/10/2003", "21/10/2004") %>

Verrà eseguita una differenza fra gli anni di queste due date e verrà mostrato a video

“1”, ovvero un anno di differenza.

Messaggi di benvenuto

Utilizzando le condizioni e gli orari è possibile mostrare a video ad esempio un

messaggio di benvenuto al nostro sito diverso in base all’ora corrente:

<%

' PRELEVA L'ORA CORRENTE

Ora = Hour(Now)

If Ora < 12 Then

%>

Buon giorno !

<%

ElseIf Ora < 17.30 Then

%>

Buon pomeriggio !

<%

ElseIf Ora < 21 Then

%>

Buona sera !

<%

Else

%>

Buona notte !

<%

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 156 di 161

End If

%>

Al posto dei messaggi di benvenuto è possibile ovviamente, ad esempio, far

visualizzare delle immagini diverse in base all’ora: basta affidarsi alla propria

fantasia...

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 157 di 161

Capitolo 20

Sostituiamo le faccine con delle immagini

Una cosa molto simpatica in un sito web può essere quella di sostituire le faccine (ad

esempio “:-)”) con delle immagini (ad esempio, in questo caso: ) nella chat o nel

guestbook. Creiamo quindi una funzione per fare questo...

Ecco il codice di questa funzione, che abbiamo chiamato “SMILES”:

<%

Function SMILES(STRINGA)

' DICHIARA L'ARRAY "FACCINE",

' CHE CONTERRA' LE FACCINE

' E IL NOME DELLE IMMAGINI CON LE

' QUALI SOSTITUIRLE...

dim faccine(2, 2)

' IL PRIMO NUMERO, INSERITO FRA PARENTESI

' (IN QUESTO CASO IL NUMERO 2), CORRISPONDE

' AL NUMERO DI FACCINE INSERITE

' DA SOSTITUIRE,

' QUINDI PER OGNI FACCINA DA SOSTITUIRE

' CON UNA IMMAGINE CHE INSERIREMO,

' DOVREMO INCREMENTARE IL PRIMO NUMERO

' PER AGGIUNGERE UNA FACCINA, SCRIVEREMO SOTTO

' LE FACCINE GIA' INSERITE:

' faccine(Numero seguente, 1) = "faccina"

' faccine(Numero faccina, 2) = "nome dell'immagine.estensione"

'

' RICORDIAMOCI DI INCREMENTARE IL PRECEDENTE NUMERO

' (L'INDICE DELL'ARRAY -> dim faccine(X, 2))

faccine(0, 1) = ":-)"

faccine(0, 2) = "felice.gif"

faccine(1, 1) = ":-("

faccine(1, 2) = "triste.gif"

faccine(2, 1) = ":D"

faccine(2, 2) = "felicissimo.gif"

' CARTELLA DOVE ANDRANNO MESSE LE IMMAGINI

' DELLE FACCINE (AD ESEMPIO "/SMILE/")

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 158 di 161

Cartella = "/smile/"

' -> -> -> -> -> -> -> -> -> ->

' DA QUI INIZIA IL VERO CUORE

' DELLA FUNZIONE

' -> -> -> -> -> -> -> -> -> ->

' SE LA LUNGHEZZA DELLA STRINGA PASSATA

' E' MAGGIORE DI 0, EFFETTUA IL CONTROLLO

' E LE EVENTUALI SOSTITUZIONI DELLE FACCINE

IF Len(Stringa) > 0 Then

For x = 0 to Ubound(faccine)

' SOSTITUISCE LE EVENTUALI FACCINE

' CON LE LORO IMMAGINI

Stringa = Replace(stringa, faccine(x, 1), "<img src=""" & CARTELLA & faccine(x, 2)

&""">")

Next

' RILASCIA IL CONTENUTO PASSATO

' CON LA SOSTITUZIONE OVVIAMENTE DELLE FACCINE

' CON DELLE IMMAGINI

SMILES = Stringa

End IF

End Function

%>

Per richiamare questa funzione, basterà semplicemente scrivere:

<%=SMILES(STRINGA)%>

Ovviamente, la nostra funzione dovrà essere inserita nella pagina nella quale la si

richiama.

Cioè, se io richiamo la funzione nella pagina “pagina.asp”, in questa pagina dovrò

inserire il codice della funzione SMILES.

Per velocizzare il tutto creiamo la pagina “smiles.asp” e inseriamo al suo interno il

contenuto della nostra funzione. Collochiamo questa pagina nella cartella nella quale è

contenuto il nostro sito.

In questo modo basterà inserire solamente la seguente riga, all’inizio della pagina

nella quale si vuole utilizzare la nostra funzione, per poterla, appunto, utilizzare:

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 159 di 161

<!-- #INCLUDE FILE="smiles.asp" -->

Applichiamo questa funzione al nostro guestbook

Nella visualizzazione dei messaggi del nostro GuestBook (che avviene nella pagina

guestbook.asp) inseriamo all’inizio della pagina il seguente include (che include la

pagina “smiles.asp”, precedentemente creata):

<!-- #INCLUDE FILE="smiles.asp" -->

E trasformiamo la riga che visualizza i messaggi del guestbook:

<%=RS("messaggio")%>

In:

<%=SMILES(RS("messaggio"))%>

In questo modo verrà attivata questa funzione.

Applichiamo questa funzione alla nostra chat

Interveniamo in questo caso, invece, nella pagina “centro_chat.asp”, che visualizza i

messaggi della chat. Includiamo sempre la pagina “smiles.asp” e trasformiamo la

riga che visualizza i messaggi della chat:

Response.Write Replace(Application("messaggi"), "@!/", "<br>")

In:

Response.Write SMILES(Replace(Application("messaggi"), "@!/", "<br>"))

Abbiamo così pure applicato questa funzione alla nostra chat!

Associare questa funzione a quella per la rimozione delle parole

indesiderate

Ovviamente, questa funzione può essere associata a quella per la rimozione delle

parole indesiderate. In questo caso, occorrerà includere le pagine delle due funzioni

(parolacce.asp e smiles.asp) e nel punto in cui applicare le funzioni:

PAROLE_INDESIDERATE(SMILES(STRINGA))

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 160 di 161

Dubbi? Risolviamoli!

Database

Sono state fate spesso in questo libro delle connessioni a dei database. Vediamo la

stringa di connessione utilizzata:

' PERCORSO DEL DATABASE

url_DB = "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.mappath("/mdbdatabase/

database.mdb")

Set Conn = Server.CreateObject("ADODB.Connection")

conn.Open url_DB

Nella variabile url_DB si specifica che il tipo di database è un database Access e si

stabilisce il percorso del database. In questo il database dovrà trovarsi dentro la

cartella /mdb-database/

Perché la cartella mdb-database? Il nome di questa cartella non è preso a caso,

infatti nella maggior parte degli spazi web su Internet, la cartella in cui inserire i

database si chiama /mdb-database/. Per questo ho inserito a titolo di esempio questa

cartella. Ovviamente vi sono spazi con cartelle di altri nomi tipo /DB/, ecc.. Per

adattarsi a questi spazi basterà cambiare il percorso del database, ricordando che

essi dovranno essere inseriti in una cartella in cui è possibile scrivere/leggere.

Poi viene creato l’”oggetto” Conn con il quale collegarsi al database e aperta la

connessione (Conn.Open url_DB).

Sempre legato al tema dei database c’è il file “adovbs.inc”. In questo file si trovano

delle costanti che servono per collegarsi al database. E’ possibile scaricare questo file

dal mio sito (vi ricordate dove si trova?) oppure cercando in qualche motore di ricerca

(tipo Google, http://www.google.it).

Uniamo gli script

In ogni script viene detto di creare un nuovo database, ma se io voglio usare due o

più script come faccio? Devo creare due database?

Assolutamente, no! Ti basta creare semplicemente la nuova tabella nel tuo database.

E per le amministrazioni?

Semplice, basterà inserire nella cartella “admin” i file per gestire i vari script.

© Salvatore Aranzulla – Crea il tuo sito in ASP!

http://mirabilweb.altervista.org http://www.hardwaremax.it

Pagina 161 di 161

… umm… ma la pagina “index.asp” non viene sovrascritta? La schermata di

identificazione ha lo stesso nome in tutti gli script!

Ebbene, sì. La pagina index.asp viene sovrascritta ma questo poco importa: tutti i file

index.asp sono uguali! Cambia solo l’indirizzo della pagina dove portare

l’amministratore una volta che si è loggato (Gestione_NOMESCRIPT.asp). Si potrebbe

creare a tal proposito una pagina (tipo Gestione_generale.asp) con i link alle varie

pagine di gestione dei vari script.

Remplace, remplace…

Spesso in questi script è stato rimpiazzato l’apice singolo (') con due apici ('') o con

una virgoletta alta (‘), perché?

Non rimpiazzando gli apici con due apici (… o con una virgoletta alta) si è esposti al

rischio di attacco da parte di pirati informatici, che potrebbero sfruttare questa

debolezza per vedere dati che non dovrebbero vedere nel nostro database (tipo

password). La tecnica utilizzata appunto è in questo caso quella dell’SQL Injection,

maggiori informazioni si trovano in rete, ad esempio cercando in San Google

(http://www.google.it) :).

Se avete altri dubbi, scrivetemi e cercheremo di risolverli in questa sezione. Vi ripeto

l’indirizzo del mio sito (non lo ricordavate, vero? :P) e la mia email:

http://mirabilweb.altervista.org e mirabilweb@tiscali.it

Grazie mille a Salvatore Aranzulla per aver creato questa ottima guida!!! 

Hai qualcosa da aggiungere o da chiedere? Scrivimi una mail compilando il seguente form!
*Nome:
Cognome:
Città:
Email:
*Oggetto:
*Richiesta:
* campi obbligatori

 

  

mappa sito

webmaster di : www.davidanna23.com ; www.europacostruzioni.com ; www.movidaloungebar.it ; www.betontransport.it ; www.butticemoto.com ; www.auto-rizzo.it ; www.pianogatta.it ; www.laperlapreziosi.it ; www.anticoforno.net ; www.calcestruzzilacolonna.it ; www.globalserviceoptimal.it ; www.pasticceriaexcelsior.com ; www.mondialplast.com ; www.villabarone.net ; www.movidaloungebar.it ; www.arabianhorseranch.eu ; www.bbsicilianwhitehorse.it ; www.aziendaagricolavella.it ; www.radioexit.it ; www.vlaboutique.com ; www.merceriadamariella.it ; www.musicalbarrandisi.com

info@davidanna23.com - davidanna23@hotmail.it - 3394134169

Guida per realizzare un sito dinamico in asp