allora, contatore di visite totali, io direi che ti conviene implementarlo così:
Quando uno entra nel tuo sito, dopo aver chiamato session_start();, tu controlli se è impostata una variabile di sessione (tipo $_SESSION["contato"]). Se la variabilie non c'è aggiungi uno al contatore totale (che magari salvi in un file di testo, dato che fare una tabella per questo non mi sembra in massimo) ed imposti la veriabile, in caso contrario non fai niente.
Se invece devi contare le visite per ciascuna pagina ti conviene usare il DB, con una tabella per contare le visite in ogni pagina. In ogni pagina, controlli se è impostata la varibile di sessione corrispondente alla tua pagina (per esempio imposti $_SESSION['contato'] come un array in cui salvi gli id delle pagine già visitate) e poi agisci come sopra.
Per gli utenti loggatti è un po' più particolare:
In ogni richiesta al server la quasi totalità dei browser passa negli header della richiesta l'indirizzo IP della macchina chiamate. Quindi, quando un utente fa login, salvi l'ultimo indirizzo IP da cui si è autenticato, mentre quando fa logout, lo cancelli. Quindi per sapere gli utenti online devi solo controllare gli utenti in cui l'ip IS NOT NULL.
Per gestire il logout in caso l'utente chiuda il browser, puoi implementare diversi sistemi, io ti consiglierei sia di implementare una chiamata AJAX sull'evento onUnLoad della pagina, sia di mettere un campo TIMESTAMP con la data dell'ultima richiesta. Se la differenza tra ora ed il timestampt supera un tot di secondi (da te impostato) l'utente viene considerato inattivo e viene scollegato.
Spero di esserti stato utile

Rispondi quotando