Inviare cartoline elettroniche con ASP | |
![]() |
|
| |
|
ASP Center
Articoli
Referenze
Script
FAQ
Downloads
Siti utili
ASP
E-Commerce con ASP
Menu Javascript
Area Aziende
Cocktail
Registrazione domini
|
Inviare cartoline elettroniche con ASP
Concesso in esclusiva a Mr.Webmaster. Vietata la riproduzione.
Uno dei servizi Web più diffusi nel mondo dell'intrattenimento e della comunicazione nella rete delle reti è l'invio ad amici e spasimanti di cartoline elettroniche, dette anche e-cards, ovvero una riproduzione (almeno dal punto di vista funzionale) di una normale cartolina cartacea, composta da una fotografia e da un messaggio associato.
Mentre nelle normali cartoline cartacee si specifica l'indirizzo di casa del destinatario, in una cartolina elettronica è sufficiente specificare l'indirizzo email del destinatario. La mail che verrà inoltrata al destinatario riporterà un link verso il nostro sito in cui verrà materialmente mostrata la cartolina ed l messaggio: dati ovviamente contenuti su di un database. Vediamo quindi come sviluppare un servizio di invio di cartoline elettroniche utilizzando ASP. Struttura dell'applicazione Un'applicazione per l'invio di cartoline elettroniche può essere sviluppata in maniera più o meno complessa, mettendo a disposizione più o meno strumenti ed utility. Un'applicazione complessa potrebbe prevedere la registrazione di un utente chiedendogli più o meno dati, anche se, in realtà, basterebbe il nome, l'indirizzo email ed una password. A questo punto sarebbe necessario prevedere un login ed un logout. Altre varie utility per un'applicazione del genere si concentrano per lo più sulla possibilità offerta al mittente di specificare colori di sfondo e del testo, il font, la dimensione del testo, etc... Inoltre si potrebbero prevedere una serie di categorie in cui indicizzare a tema le varie cartoline (amore, amicizia, divertenti, etc...). La nostra applicazione è di dimensioni più modesta, non prevede la registrazione degli utenti ne le categorie in cui inserire più o meno cartoline; non prevede stilizzazione del testo del messaggio o altre utility particolari, ma nonostante questo (con qualche ritocco stilistico) è già pronta per essere messa in produzione. Allo scopo utilizzeremo una serie di file ed una cartella in cui inserire le immagini. Create quindi sul vostro server Web personale la cartella cartoline ed al suo interno inserite la cartella immagini in cui inserirete almeno due foto con estensione .jpg. Di seguito l'elenco dei file che utilizzeremo con relativa spiegazione:
All'interno della cartella cartoline che abbiamo creato sul nostro server Web personale, creiamo adesso il file MS Access database.mdb che conterrà la sola tabella cartoline composta dai seguenti campi:
Dedico un'unica nota al campi immagine che è numerico: le foto devono essere nominate come 1.jpg, 2.jpg e cosi via; in detto campo verrà inserito il numero corrispondente al nome dell'immagine e la costruzione del percorso dell'immagine a video verrà costruito dinamicamente. Il file di configurazione: config.asp All'interno della cartella cartoline inseriremo tutti i file ASP dell'applicazione; iniziamo dal file di configurazione (config.asp) che includeremo con le SSI in tutti i file ASP di visualizzazione; Ecco il codice:
<%
Option Explicit
On Error Resume Next
Response.Buffer = True
Dim str_cn
str_cn = "driver={Microsoft Access Driver (*.mdb)};dbq=" _
& Server.MapPath("database.mdb")
%>
Attenzione: trattandosi di un file che verrà incluso con le SSI in altri file ASP, non dovremo specificare la definizione del linguaggio di scripting utilizzato.Come già detto in precedenza,lo scopo di questo file è di definire alcune intestazioni comuni a tutti i file ASP dell'applicazione e la stringa di connessione al database: in questo modo avremo una matrice unica da modificare in caso cambiassimo il percorso del file sul server oppure se volessimo rinominarlo (scelta da adottare). Mostrare le cartoline ed il form di invio: index.asp Come già accennato in precedenza, il file iniziale dell'applicazione, index.asp ha il compito di mostrare le tutte cartoline a disposizione; ad ogni cartolina è associato un link con una querystring che riporta l'utente alla pagina stessa; il valore della querystring è il nome del file immagine associato senza l'estensione .jpg. Il codice è molto semplice e somiglia a quello di un file HTML statico se non per la condizione impostata secondo la quale: se la querystring non è definita vengono mostrate tutte le cartoline, altrimenti viene mostrata la cartolina scelta ed il modulo d'invio:
<%@LANGUAGE = VBScript%>
<!--#include file="config.asp"-->
<%
Dim id
id = Request.QueryString("id")
%>
<html>
<head>
<title>Inviare cartoline elettroniche con ASP</title>
</head>
<body>
<h1 align="center">Inviare cartoline elettroniche con ASP</h1>
<p align="center">
<%If id = "" Then%>
<a href="index.asp?id=1"><img src="immagini/1.jpg" border="0"></a>
<a href="index.asp?id=2"><img src="immagini/2.jpg" border="0"></a>
<a href="index.asp?id=3"><img src="immagini/3.jpg" border="0"></a>
<br><br>
<a href="index.asp?id=4"><img src="immagini/4.jpg" border="0"></a>
<a href="index.asp?id=5"><img src="immagini/5.jpg" border="0"></a>
<a href="index.asp?id=6"><img src="immagini/6.jpg" border="0"></a>
<br><br>
<a href="index.asp?id=7"><img src="immagini/7.jpg" border="0"></a>
<a href="index.asp?id=8"><img src="immagini/8.jpg" border="0"></a>
<a href="index.asp?id=9"><img src="immagini/9.jpg" border="0"></a>
<br><br>
<%Else%>
Hai scelto la cartolina # <%=id%><br><br>
<img src="immagini/<%=id%>.jpg"><br><br>
<form method="post" action="invia.asp">
<input type="hidden" name="immagine" value="<%=id%>">
Nome mittente<br>
<input type="text" name="nome_mittente" maxlength="20"><br>
Email mittente<br>
<input type="text" name="email_mittente" maxlength="50"><br>
Nome destinatario<br>
<input type="text" name="nome_destinatario" maxlength="20"><br>
Email destinatario<br>
<input type="text" name="email_destinatario" maxlength="50"><br><br>
Messaggio<br>
<textarea name="messaggio" rows="5" cols="30"></textarea><br><br>
<input type="submit" value=" Invia ">
</form>
<a href="index.asp">Cambia Cartolina</a>
<%End If%>
</p>
</body>
</html>
Attenzione: il campo immagine viene valorizzato dinamicamente da una casella di testo nascosta a cui viene passato il valore della querystring.Potete provare a dinamizzare la lettura delle immagini utilizzando il File System Object e leggere le varie immagini all'interno dell'omonima cartella, stamparle a video e costruire dinamicamente il link. Provate a lanciare il file index.asp all'indirizzo http://localhost/cartoline/index.aspNaturalmente potete prevedere un controllo sui campi con Javascript lato client, per quanto il file invia.asp (spiegato a breve) già effettua un potente controllo lato server. Registrazione ed invio della cartolina: invia.asp Siamo arrivati alla parte più complicata nonchè cuore dello script, il file invia.asp il cui scopo è quello di:
Il codice, riportato di seguito, è abbondantemente commentato e spiega in maniera esaustiva tutte le fasi salienti:
<%@LANGUAGE = VBScript%>
<!--#include file="config.asp"-->
<%
' SPECIFICA L'INDIRIZZO DEL TUO SITO ED IL PERCORSO
' DEL FILE leggi.asp PER LA VISUALIZZAZIONE DELLA CARTOLINA
' DA PARTE DEL DESTINATARIO
Dim sito
sito = "http://www.tuosito.ext/cartoline/leggi.asp?id="
' SPECIFICA L'INDIRIZZO EMAIL DEL TUO SITO DA CUI VERRA'
' INVIATA LA CARTOLINA
Dim tua_mail
tua_mail = "cartoline@tuosito.ext"
%>
<html>
<head>
<title>Inviare cartoline elettroniche con ASP</title>
</head>
<body>
<p align="center">
<%
' DICHIARO LE VARIABILI CHE RECUPERO DAL FORM
Dim immagine
Dim nome_mittente
Dim email_mittente
Dim nome_destinatario
Dim email_destinatario
Dim messaggio, messaggio2
' RECUPERO MATERIALMENTE LE VARIABILI DAL FORM
immagine = Request.Form("immagine")
nome_mittente = Request.Form("nome_mittente")
email_mittente = Request.Form("email_mittente")
nome_destinatario = Request.Form("nome_destinatario")
email_destinatario = Request.Form("email_destinatario")
messaggio = Request.Form("messaggio")
messaggio2 = Replace(Server.HTMLEncode(messaggio), vbCrLf, "<br>")
' ESPRESSIONE REGOLARE PER VERIFICARE L'INDIRIZZO EMAIL
Dim re, p
Set re = New RegExp
p = ""
p = p & "^[\w\-\.]*[\w\.]\@[\w\.]"
p = p & "*[\w\-\.]+[\w\-]+[\w]\.+[\w]+[\w $]"
re.Pattern = p
' VERIFICO LA VALIDITA' DEI CAMPI E, A CONDIZIONI
' SODDISFATTE, EFFETTUO LA REGISTRAZIONE ED INVIO LA MAIL
If IsNumeric(immagine) = False Or immagine < 1 Then
Response.Write "Specificare l'immagine"
ElseIf Len(Trim(nome_mittente)) = 0 Then
Response.Write "Inserisci il tuo nome"
ElseIf re.Test(email_mittente) = False Then
Response.Write "Specifica il tuo indirizzo email"
ElseIf Len(Trim(nome_destinatario)) = 0 Then
Response.Write "Inserisci il nome del destinatario"
ElseIf re.Test(email_destinatario) = False Then
Response.Write "Specifica l'indirizzo email del destinatario"
ElseIf Len(Trim(messaggio)) = 0 Then
Response.Write "Inserisci il messaggio"
Else
' EFFETTUO LA REGISTRAZIONE
Dim cn, rs
Set cn = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")
cn.Open str_cn
rs.Open "cartoline", cn, 3, 3
rs.AddNew
rs("immagine") = immagine
rs("nome_mittente") = Server.HTMLEncode(nome_mittente)
rs("email_mittente") = email_mittente
rs("nome_destinatario") = Server.HTMLEncode(nome_destinatario)
rs("email_destinatario") = email_destinatario
rs("messaggio") = messaggio2
rs.Update
rs.Close
' RECUPERO L'ID DELLA CARTOLINA CORRENTE
Dim SQL, ID, mostra_id
SQL = "SELECT TOP 1 id FROM cartoline WHERE " _
& "email_mittente = '" & email_mittente & "' " _
& "ORDER BY id DESC"
Set mostra_id = cn.Execute(SQL)
ID = mostra_id("id")
Set mostra_id = Nothing
cn.Close
Set rs = Nothing
Set cn = Nothing
' COSTRUISCO IL CORPO DELLA MAIL
Dim corpo
corpo = ""
corpo = corpo & "Ciao " & nome_destinatario & ", "
corpo = corpo & nome_mittente & " ti ha mandato questa "
corpo = corpo & "cartolina elettronica " & vbCrLf & vbCrLf
corpo = corpo & sito & ID
' INVIO LA MAIL AL DESTINATARIO
Dim email
Set email = Server.CreateObject("CDO.Message")
With email
.To = email_destinatario
.From = tua_mail
.Subject = nome_mittente & " ti ha inviato una cartolina"
.TextBody = corpo
.Send
End With
Set email = Nothing
Response.Write "Cartolina inviata con successo!"
End If
' SVUOTO L'OGGETTO PER IL CONTROLLO DELL'INDIRIZZO EMAIL
Set re = Nothing
%>
<br><br>
<a href="javascript:window.history.back()">Indietro</a>
</p>
</body>
</html>
Lettura della singola cartolina: leggi.aspSiamo arrivati alla fase conclusiva di questo semplice e divertente script, la lettura della cartolina. Si tratta di nulla di più e nulla di meno di una query parametrizzata (da una querystring) sul database con relativa stampa a video dei dati. Il codice è semplicissimo e non ha bisogno di commenti per chiunque abbia anche solo un minimo di dimestichezza con ASP:
<%@LANGUAGE = VBScript%>
<!--#include file="config.asp"-->
<%
Dim id
id = Request.QueryString("id")
If IsNumeric(id) = False Then
Response.End
End If
%>
<html>
<head>
<title>Inviare cartoline elettroniche con ASP</title>
</head>
<body>
<%
Dim cn, rs
Set cn = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")
cn.Open str_cn
rs.Open "SELECT * FROM cartoline WHERE id = " & id, cn, 1
If rs.EOF Then
Response.Write "Nessuna cartolina"
Else
%>
<h1 align="center">
A: <%=rs("nome_destinatario")%> -
Da: <a href="mailto:<%=rs("email_mittente")%>">
<%=rs("nome_mittente")%></a>
</h1>
<table align="center" width="350">
<tr><td>
<p align="center"><img src="immagini/<%=rs("immagine")%>.jpg"></p>
<p style="background: #FFFFCC;"><%=rs("messaggio")%></p>
<p align="center"></p>
</td></tr>
</table>
<p align="center"><a href="index.asp">Invia una cartolina</a></p>
<%
End If
rs.Close
cn.Close
Set rs = Nothing
Set cn = Nothing
%>
</body>
</html>
Conclusioni e spuntiCome già detto nella fase introduttiva di questo ricco Articolo, questo script, per quanto non complesso e non particolarmente ricco di utility, è funzionale al punto giusto per essere messo in produzione. Potete tranquillamente stilizzarlo a vostro piacimento ed arricchirlo di utility e features. C'è una sola operazione da compiere di vitale importanza: operazione che volutamente non ho compiuto per dare a voi lo spunto per mettere alla prova le vostre competenze in ASP. E' necessario, in qualsiasi modo, ampliare il database ed aggiungere il campo password in modo da impedire la visualizzazione di cartoline inviate ad altri utenti. La prima cartolina inviata avrà ID = 1 e sarà visualizzabile ad un indirizzo del genere: http://www.tuosito.ext/cartoline/leggi.asp?id=1Inserendo il campo password l'indirizzo finale, ricevuto via email da destinatario, sarà qualcosa del genere: http://www.tuosito.ext/cartoline/leggi.asp?id=1&pass=MiaPasswordScegliete voi il sistema di generazione della password che può essere lasciata a discrezione dell'utente aggiungendo una casella di testo al modulo, oppure (scelta consigliata) potete generare casualmente una password stesso con ASP (VBScript). Ricordate di modificare di conseguenza l'applicazione in tutti i punti in cui è necessario per ospitare questa importante opzione aggiuntiva. |
Newsletter
Stringhe di Conn.
|
||
| © 2008 ASP Center di Luca Ruggiero - P. IVA 05564851219 - Disclaimer | Privacy | Pubblicità | Supportaci | Staff | Contatti | ||||
| Appunti PHP | Giornale Webmaster | Mr.Webmaster | Download | DevSpy.com | ASPCode.it | ClaudioGarau.it | Webmaster Facile | Come Faccio | AlVerde.net | CodiceFacile.it | I Programmatori | By Luciani | VoiceXML Italian User Group | Giochi | Extro Web Site | Morpheus Web | AG Web Solutions | Net-Free | PC Sicuro | PC Self | Tutorial Web | Dablones | ||||