View Full Version : [PHP] Messaggistica Utenti
Salve a tutti, vorrei fare uno script che mi permetta di fare in modo che gli utenti connessi possano scriversi messaggi a vicenda. Vorrei un sistema che quando arrivano nuovi messaggi aprano una finestra di popup con il testo del messaggio, e che quando uno vuole inviarne uno basta cliccare sul nick e comparirà una finestra come quella di prima ma dove il messaggio andrà scritto... dopo che verrà inviato comparira nel pc del ricevente la mitica popup. (ovviamente dopo un eventuale refresh della pagina )
Al momento credo che il problema principale sia mantenere le sessioni che si sono registrate con nome utente e login nel sito, e appunto trasportarle nel popup. poi il resto nn credo sia difficile...
Any ideas?
Vuoi che i messaggi si possano spedire solamente fra utenti online ?
In PHP sapere quando un utente è veramente online o no è praticamente impossibile (non esistono eventi lanciati all'apertura o la chiusura delle sessioni)...
L'unico modo è segnare all'interno di un DB l'ora dell'ultima volta che viene utilizzata da quell'utente una qualsiasi pagina del sito (magari conviene fare un aggiornamento ogni 4-5 minuti per non aumentare troppo il carico sul DB)...
A questo punto consideri online tutti gli utenti che hanno effettuato un accesso al sito negli utlimi 20 minuti...
Per scambiarsi i messaggi e fare un finestra di popup a questo punto è banale (basta mettere nel DB un check su un certo utente ogni volta che gli viene inviato un messaggio)...
Ogni volta che viene caricata una pagina si controlla la presenza del check...se è presente si scrive il codice per generare la finestra di popup e si rimette il check allo stato iniziale...
Originariamente inviato da cionci
Vuoi che i messaggi si possano spedire solamente fra utenti online ?
In PHP sapere quando un utente è veramente online o no è praticamente impossibile (non esistono eventi lanciati all'apertura o la chiusura delle sessioni)...
L'unico modo è segnare all'interno di un DB l'ora dell'ultima volta che viene utilizzata da quell'utente una qualsiasi pagina del sito (magari conviene fare un aggiornamento ogni 4-5 minuti per non aumentare troppo il carico sul DB)...
A questo punto consideri online tutti gli utenti che hanno effettuato un accesso al sito negli utlimi 20 minuti...
Per scambiarsi i messaggi e fare un finestra di popup a questo punto è banale (basta mettere nel DB un check su un certo utente ogni volta che gli viene inviato un messaggio)...
Ogni volta che viene caricata una pagina si controlla la presenza del check...se è presente si scrive il codice per generare la finestra di popup e si rimette il check allo stato iniziale...
La cosa la vedo un po' improbabile xkè uno potrebbe semplicemente messaggiare come se fosse l'altro utente, se quest'ultimo è collegato (intendo nn ancora passati i 20 minuti dal suo ultimo accesso)...
Originariamente inviato da Cimi
La cosa la vedo un po' improbabile xkè uno potrebbe semplicemente messaggiare come se fosse l'altro utente, se quest'ultimo è collegato (intendo nn ancora passati i 20 minuti dal suo ultimo accesso)...
???? Ovviamente serve un autentificazione...ed ogni utente può agire solo con il nickname con cui è registrato... Mi sembrava ovvio che ci volesse... Era questo che intendevi ?
Allora,
mi faccio il login nel sito.
clicco su un utente connesso.
mi si apre il popup per inviare il messaggio a questo tizio.
Solo che se nn ho ancora effettuato il login posso lo stesso cliccare sul tizio e lo stesso posso inviare il messaggio....
A QUESTO PUNTO CREDO CI VOGLIA UN MODO PER PASSARE LE SESSIONI DALLA PAGINA BASE (da dove clicco) AL POPUP.
Almeno io credo si faccia così...
Metti che se non è definita una certa variabile di sessione (che viene inizializzata al momento del login) non ti stampi il collegamente al popup per inviare i messaggi...
Ma allora basterebbe scrivere l'url del popup... :-\
All'url del popup fai un controllo che se nella sessione non c'è sempre la solita variabile definita non stampi per niente l'output HTML della pagina di inserimento del messaggio...
Puoi fare la stessa cosa per ogni pagina che non vuoi che venga vista dagli utenti non loggati...
Originariamente inviato da cionci
All'url del popup fai un controllo che se nella sessione non c'è sempre la solita variabile definita
????
:confused: :confused: :confused:
Variabile definita?
Nella pagina che stampa il form in cui immettere il messaggio:
if($_SESSION["Loggato"] != 1)
exit("Non sei autorizzato a visualizzare questa pagina !");
Quando hai verificato che username e password sono corretti:
$_SESSION["Loggato"] = 1;
Quando stampi la lista degli utenti online:
if($_SESSION["Loggato"] != 1)
echo $utenti_online[i];
else
echo "<a href=\"javascript:aprifinestrapopup('$utenti_online[i]')\">".$utenti_online[i]."</a>";
Perfetto va... avevo fatto un errore prima...
nn avevo messo un session start... :rolleyes: :rolleyes:
:sofico:
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.