Precedentemente abbiamo visto come verificare se il nome utente sia già utilizzato all'interno del sistema oppure no. Ora, in caso il nome utente non sia presente, vediamo come effettuare la registrazione nel database.
Alla riga cinquantuno appare un if che testa una determinata condizione:
051: if (intValido = 0 ) then
Vi ricordate a cosa serve questo test? Se il nome veniva trovato il valore di intValido passava da 0 ad 1 e, di conseguenza, avrebbe portato all'esclusione del seguente codice.
Essendo il nome utente libero, possiamo procedere tranquillamente nell'inserimento dei dati immessi dall'utente all'interno del database.
053: 'Inserisco l'utente
054: Set Conn = Server.CreateObject("ADODB.Connection")
055: Set Rs = Server.CreateObject("ADODB.Command")
056:
057: Conn.ConnectionString = dbConnessione
058: Conn.Open
059:
060: Rs.ActiveConnection = Conn
061: Rs.CommandType = 1
062: Rs.CommandText = "insert into utenti(login, codice, mail) values('"&strLogin&"','"&strCode&"','"&strMail&"')"
063: Rs.Execute
064:
065: Conn.Close
066:
067: set Conn = nothing
068: set Rs = nothing
Nella riga 54 creo l'oggetto Conn che serve per potermi connetter al database e alla riga 57 associo tramite:
057: Conn.ConnectionString = dbConnessione
la stringa di connessione al database. Ricordo che la stringa può esser creata in due modi diversi: in base al modo di creazione, varia il valore da associare a Conn.ConnectionString.
Analogo il ragionamento alla riga 55 dichiarando l'oggetto RecordSet (Rs). Alla riga 60, si associa il recordset alla connessione attiva. Alla riga successiva, si indica il tipo di comando per agire sul database e alla riga 62 si effettuata tramite una INSERT INTO l'inserimento fisico dei dati nel database. Alla riga 63 viene detto di eseguire tutto quello precedentemente specificato in merito al recordset. In seguito viene chiuso e "svuotato" l'oggetto Conn e l'oggetto Rs viene solo "svuotato"? Come mai questa differenza? La risposta è semplice. Quando si interagisce col Recordset utilizzando la sintassi SQL, il recordset si chiude da solo e quindi va solo svuotato. Se non mi credete, provate a modificare la riga sessantaquattro nel seguente modo:
064: Rs.Close
ATTENZIONE : Se eseguite la pagina con questa aggiunta riceverete un errore.
Ora, come penultima operazione della fase di registrazione, andremo a prelevare l'id dell'utente appena inserito e scriverlo in un cookies. Questa operazione è necessaria per il modo in cui ho deciso di impostare il progetto. Ora illustro meglio. Nella pagina personale dei messaggi, l'utente verrà riconosciuto (una volta effettuato il log-on) tramite il suo codice identificativo (id del suo record). Il codice necessario per svolger tale operazione è il seguente:
070: 'Prelevo id_user appena registrato
071:
072: Set conn = Server.CreateObject("ADODB.Connection")
073: Set comm = Server.CreateObject("ADODB.Command")
074: Set Rs = Server.CreateObject("ADODB.Recordset")
075:
076: conn.CommandTimeout = 40
077: conn.CursorLocation = 1
078: conn.ConnectionString = dbConnessione
079: conn.Open
080:
081: comm.ActiveConnection = conn
082: comm.CommandType = 1
083:
084: comm.CommandText = "select id_user from utenti where login='"&strLogin&"'"
085:
086: Rs.Open comm,,1,1
087:
088: response.cookies("messaggistica")("iduser") =
rs("id_user")
089:
090: rs.close
091: conn.close
092:
093: set rs = nothing
094: set comm = nothing
095: set conn = nothing
Le righe per svolgere quanto appena detto non sono poi molte (circa una ventina). Lo scopo è semplice. Bisogna estrarre solo il campo id_user dalla tabella utenti dove il campo login è uguale al contenuto della variabile strLogin. Detto fatto. Basta usare il linguaggio SQL con una select mirata.
084: comm.CommandText = "select id_user from utenti where login='"&strLogin&"'"
Una volta volta aperto il RecordSet (Rs)
086: Rs.Open comm,,1,1
Siamo certi di avere un solo record in quanto il nome utente è univoco. Lo abbiamo già verificato in precedenza. Ora basta inserire il valore ottenuto nel cookies e aspettare ad utilizzarlo nelle altre pagine del nostro progetto.
088: response.cookies("messaggeria")("iduser") =
rs("id_user")
Ora, possiamo chiudere tutto quanto e svuotare il relativo contenuto.
090: rs.close
091: conn.close
092:
093: set rs = nothing
094: set comm = nothing
095: set conn = nothing
Attenzione: Se i nomi utenti, le password e le mail vengono immessi manualmente da mySqlFront NON si ha nessuna sicurezza sull'univocità dello stesso nome utente. Il campo univoco per mySqlFront è il campo id_user che si auto-incrementa ogni volta che inseriamo un nuovo record.