Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Messaggeria con avviso in popup di nuovi messaggi

Creare un sistema di messaggeria interno dedicato agli utenti di un'area riservata
Creare un sistema di messaggeria interno dedicato agli utenti di un'area riservata
Link copiato negli appunti

Questo articolo spiega in che modo sia possibile creare un sistema di messaggeria interno dedicato agli utenti registrati di un'area riservata.

Ogni utente registrato che acceda alla propria area personale può inviare e ricevere messaggi da tutti gli altri appartenenti alla community. Quando si collega di nuovo al sito dopo essere stato offline, potrà quindi verificare se, dall'ultima volta in cui ha avuto accesso all'elenco dei propri messaggi, ve ne siano di nuovi ancora non letti.

L'esistenza di nuovi messaggi da leggere viene comunicata all'utente in modo molto visibile, tramite la comparsa di una popup temporanea (la cui chiusura automatica avviene dopo pochi secondi).

La messaggeria creata è completa di area di registrazione e di procedura di login ma, poiché questi sono argomenti già trattati in altri articoli di questa sezione, saranno commentati celermente per lasciare spazio all'analisi della procedura di invio e ricezione dei messaggi. Lo zip disponibile per il download contiene lo script completo. Le parti principali sono commentate per una migliore comprensione dei singoli passaggi.

L'installazione è semplicissima: basterà modificare il path del database presente nel file common.asp per adeguarlo alla cartella in cui vorrete inserirlo sul vostro server. Tutti gli altri file vanno copiati in una stessa directory. Per fruire della ricezione di messaggi sarà necessario registrarsi con 2 user diversi, dal momento che lo script impedisce l'invio di messaggi all'utente loggato. In uno scenario reale, ovviamente, un utente conosce già i nomi degli altri membri della community.

Il database

Il database utilizzato contiene due tabelle. Nella prima

tabella, denominata tUtenti, sono contenute

le informazioni di base relative agli iscritti acquisite in fase di registrazione

e necessarie per il login e per l'identificazione degli utenti medesimi.

Vista della tabella tUtenti

I singoli campi della tabella indicano quanto segue:

utente_id: contatore degli utenti

utente_nome: nome dell'utente registrato

utente_cognome: cognome dell'utente

utente_email: email dell'utente

utente_user: user dell'utente scelta in fase di registrazione

utente_password: password dell'utente scelta in fase di registrazione.

Nella seconda tabella, denominata tMessaggi, sono contenute tutte le informazioni relative ai messaggi inviati e ricevuti da ogni utente, nonché l'oggetto ed il contenuto di ciascun messaggio.

Vista della tabella tMessaggi

I singoli campi della tabella indicano quanto segue:

messaggio_id: contatore dei messaggi

messaggio_mittente: identificativo del mittente del messaggio

messaggio_destinatario: identificativo del destinatario del messaggio

messaggio_oggetto: oggetto del messaggio inviato

messaggio_corpo: corpo del messaggio inviato

messaggio_data: data di invio del messaggio

messaggio_letto: campo che indica se il messaggio non è stato ancora letto oppure lo è stato (0/1).

Gli script utilizzati dal sistema di messaggeria sono idealmente racchiusi
all'interno di tre categorie a seconda che riguardino "registrazione", "login" o "invio e ricezione di nuovi messaggi".

Come anticipato sopra, gli script appartenenti alle prime
due categorie non saranno commentati in quanto già noti per essere stati trattati in forma simile all'interno di altri articoli. Relativamente ad essi mi limito a porre in evidenza solamente quanto segue:

  1. le informazioni di registrazione richieste all'utente all'inizio sono tutte obbligatorie: in caso di campi incompleti o mancanti, questi vengono evidenziati nel form in colore diverso in modo da facilitarne la correzione;
  2. non possono esserci - per ovvi motivi - utenti che utilizzano lo stesso
    user. Nel caso in cui si sia scelto uno user già in uso, è necessario effettuare una nuova scelta fino a trovarne uno libero;
  3. al login effettuato con successo segue la creazione di due variabili di
    sessione: Session("utente_id") e Session("utente_user") contenenti le informazioni relative all'identificativo dell'utente e al suo user: tali dati sono necessari per controllare e garantire la permanenza dell'utente all'interno dell'area riservata;
  4. tutte le operazioni sul database (connessione, selezione, inserimento, modifica, cancellazione di dati) sono effettuate dal codice contenuto all'interno della pagina common.asp, (Listato 1) che rappresenta il cuore dello script, in modo da alleggerire le singole pagine e facilitare la manutenzione: ciò vale sia per la "registrazione" e il "login", sia per tutto il resto del sistema di gestione della messaggeria.

La pagina iniziale è denominata default.asp ed all'interno di essa è possibile effettuare il login (se si è già in possesso dei parametri di accesso) oppure registrarsi. Come ricordato, una volta registrati è possibile accedere alla propria area riservata (pagina_personale.asp) semplicemente inserendo la user e la password prescelte.

Una volta ottenuto l'accesso alla propria pagina personale,
possono verificarsi tre eventi, uno automatico e due come conseguenze di scelte
effettuate dall'utente:

  1. apparizione di un popup a tempo dal basso dello schermo con l'indicazione
    di eventuali nuovi messaggi non ancora letti (evento automatico);
  2. lettura e cancellazione dei messaggi vecchi e nuovi nella propria casella
    da parte dell'utente;
  3. scrittura di un nuovo messaggio da parte dell'utente.

Popup di avviso per nuovi messaggi

Quando un utente accede alla propria pagina personale sono
automaticamente valorizzati, tramite sub routine, il numero di messaggi totali presenti nelle cartelle dell'utente ed il numero di nuovi messaggi arrivati dalla sua ultima visita.

  1. totaleMessaggi: fornisce in output (tramite la dichiarazione byRef) il totale dei messaggi destinati all'utente;
  2. contaMessaggi: fornisce in output (tramite la dichiarazione byRef) il totale dei nuovi messaggi destinati all'utente, calcolati contando i messaggi che hanno il campo messaggio_letto = 0 all'interno della tabella tMessaggi.

Nel caso in cui la sub contaMessaggi restituisse un valore maggiore
di 0, tramite Javascript è possibile far apparire una piccola popup a tempo che
avvisa l'utente della presenza di nuovi messaggi non letti, come evidenziato nella figura sottostante.

Il popup di avviso della presenza di nuovi messaggi

Leggere/cancellare i messaggi in elenco

La lettura e la cancellazione dei messaggi (vecchi e nuovi) da parte dell'utente sono rese possibili da due procedure:

  1. listaMessaggi: fornisce in output (tramite la dichiarazione byRef)un array bidimensionale contenente le informazioni di dettaglio relative ad ogni messaggio e provvede, successivamente, ad impostare ad 1 il campo messaggio_letto azzerando quindi i nuovi messaggi.
  2. cancellaMessaggio: riceve in input l'identificativo del singolo messaggio (cliccando sul link in coda ad ogni messaggio) ed effettua la cancellazione.

Scrivere un nuovo messaggio

La scrittura di un nuovo messaggio richiede la compilazione
di un modulo al quale occorre fornire le seguenti informazioni obbligatorie:

  1. destinatario del messaggio: deve corrispondere obbligatoriamente ad uno
    degli user registrati;
  2. . oggetto del messaggio da inviare;
  3. corpo del messaggio da inviare.

Le informazioni, se correttamente inserite, attivano una
procedura dedicata:

- inserisciMessaggio: riceve in input tutti i dati del messaggio (mittente, destinatario, oggetto e corpo) ed effettua l'inserimento.

La messaggeria è così completa e perfettamente funzionante.

Possibili implementazioni ulteriori possono riguardare la possibilità di indicare i mittenti dei messaggi direttamente nella popup oppure elencare gli user nell'inserimento di un nuovo messaggio piuttosto che doverli scrivere manualmente: in questo caso però vi sarebbe l'inconveniente di generare un elenco estremamente lungo nel caso in cui gli iscritti fossero molto numerosi.

Ti consigliamo anche