Articoli Referenze Script FAQ Downloads ASP E-Commerce con ASP Menu Javascript Area Aziende Cocktail Registrazione domini



Un Forum di discussione in ASP - Parte 2

Home + Articoli + Messaggistica + Articolo # 136
Autore: Luca Ruggiero

Concesso in esclusiva a Mr.Webmaster. Vietata la riproduzione.


Il modulo di iscrizione

In genere si richiede ad un utente di effettuare l'iscrizione al servizio, in modo da avere utenti definiti che inseriscano i propri messaggi a loro nome e non segnalando un nome differente. E' ovvio che ognuno è libero di effettuare l'iscrizione anche più di una volta e se lo fa al solo scopo di creare confusione e dar fastidio non possiamo impedirlo.

In genere si richiedono agli utenti dati quali username, password, indirizzo email ed eventualmente anche il sesso, la città, la propria Homepage ed altre informazione di carattere generale che si possono considerare opzionali. Nel nostro caso ci limiteremo a richiedere solo username, password ed email e ci interfacceremo con la tabella utenti, definita nel secondo paragrafo del primo capitolo del presente Tutorial.

Si crei quindi il file iscriviti.asp che conterrà il modulo di iscrizione che punta, nell'action, a se stesso, specificando al submit una querystring che, una volta valorizzata, esegue lo script di verifica sulla validità dei campi, controlla che la username non sia stata già scelta da un altro utente ed infine, a condizioni soddisfatte, esegue materialmente la registrazione dell'utente.

Di seguito il codice commentato:
<%@LANGUAGE = VBScript%>
<!--#include file="config.asp"-->
<%
Dim Cn, add, username, password, email, RID, Rs, re, espr
espr = "^[\w\-\.]*[\w\.]\@[\w\.]*[\w\-\.]+[\w\-]+[\w]\.+[\w]+[\w $]"
add = Request.QueryString("add")
%>
<html>
<head>
   <title>Forum</title>
</head>
<body>

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

<%
Dim 
' Valorizzo la querystring e lancio
' lo script descritto in precedenza
If add = "OK" Then
' Recupero i dati dal form
username = Request.Form("username")
password = Request.Form("password")
email = Request.Form("email")
' Uso un'espressione regolare
' per controllare la validità dell'email
Set re = New RegExp
re.Pattern = espr
' Effettuo il controllo sui campi
If Len(Trim(username)) = 0 Then
Response.Write "<p align=center>Inserisci la tua username"
ElseIf Len(Trim(password)) = 0 Then
Response.Write "Inserisci la tua password"
ElseIf re.Test(email) = False Then
Response.Write "Inserisci il tuo indirizzo email"
Else ' Soddisfatte le condizioni...
' Mi connetto al database
Set Cn = Server.CreateObject("ADODB.Connection")
Cn.Open StrCn
' Verifico che la username non esista già
Dim SQL
SQL = "SELECT * FROM utenti WHERE username = '" & username & "'"
Set RID = Cn.Execute(SQL)
If Not RID.EOF Then
Response.Write "Username già in uso"
Else
' Se non esiste già effettuo la registrazione
Set Rs = Server.CreateObject("ADODB.Recordset")
Rs.Open "utenti", Cn, 3, 3
Rs.AddNew
Rs("username") = username
Rs("password") = password
Rs("email") = email
Rs.Update
Rs.Close
Set Rs = Nothing
Response.Write "Iscrizione avvenuta con successo!"
End If
Cn.Close
Set Cn = Nothing
End If
With Response
.Write ""
.Write "<a href=""javascript:window.history.back()"">"
.Write "Indietro</a>"
End With
Else
%>

<table width="500" align="center" cellpadding="1" cellspacing="1"
border="1">
<form method="post" action="iscriviti.asp?add=OK">
<tr>
<td bgcolor="#CCCCCC"><b>Iscriviti</b></td>
</tr>
<tr>
<td>
Username<br>
<input type="text" name="username" maxlength="15">
<br>
Password<br>
<input type="password" name="password" maxlength="15">
<br>
Email<br>
<input type="text" name="email" maxlength="50">
<br>
</td>
</tr>
<tr>
<td align="right"><input type="submit" value="Iscriviti"></td>
</tr>
</form>
</table>

<%
End If
%>

</body>
</html>
Elenco degli utenti iscritti

Tutti i Forum mettono a disposizione una pagina in cui sono riepilogati tutti gli utenti con i loro indirizzi email ed un minimo di statistiche, ad esempio il numero di messaggi inseriti, a prescindere dal fatto che siano nuove discussioni o solo risposte a discussioni aperte da se stessi in precedenza o da qualche altro utente. Di seguito il codice commentato del file utenti.asp, il cui scopo è quello appena descritto:
<%@LANGUAGE = VBScript%>
<!--#include file="config.asp"-->
<%
' Dichiaro le variabili che mi servono
Dim Cn, Mostra, Conta, Colore, N_Messaggi
' Mi connetto al database
Set Cn = Server.CreateObject("ADODB.Connection")
Cn.Open StrCn
' Estraggo tutti gli utenti
Set Mostra = Cn.Execute("SELECT * FROM utenti ORDER BY username ASC")
' Variabile contatore per alternare il colore delle righe del report
Conta = 0
%>
<html>
<head>
   <title>Forum</title>
</head>
<body>

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

<table width="700" align="center" cellpadding="1" cellspacing="1"
border="1">
<tr bgcolor="#CCCCCC">
<td colspan="3"><b>Elenco Utenti<b></td>
</tr>
<%
' Verifico che ci siano utenti iscritti
If Mostra.EOF Then
%>
<tr><td colspan="2">Nessuna sezione presente</td></tr>"
<%
' Estraggo tutti i record dalla tabella utenti
Else While Not Mostra.EOF
Colore = "#FFFFFF"
If Conta Mod 2 <> 0 Then
Colore = "#EEEEEE"
End If
%>
<tr bgcolor="<%=Colore%>">
<td width="45%"><b><%=Mostra("username")%></b></td>
<td width="45%" align="center">
<a href="mailto:<%=Mostra("email")%>"><%=Mostra("email")%></a>
</td>
<td width="10%" align="center">
<%
' Conto il numero di messaggi inseriti da ciascun utente
Dim SQL
SQL = ""
SQL = SQL & "SELECT COUNT(*) AS id FROM messaggi "
SQL = SQL & "INNER JOIN utenti ON messaggi.id_autore = utenti.id "
SQL = SQL & "WHERE utenti.id = " & Mostra("id")
Set N_Messaggi = Cn.Execute(SQL)
Response.Write N_Messaggi("id")
%>
</td>
</tr>
<%
Conta = Conta + 1
Mostra.MoveNext
Wend
End If
%>
</table>

</body>
</html>
<%
Cn.Close
Set Cn = Nothing
%>
© 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