Ciao,
ti posto qui di seguito un esempio un po' più concreto ma che sia il più semplice possibile.
Immagina che tu usi un db e questo db abbia, tra le altre, 2 tabelle, la tabella 'utenti' e la tabella 'sessioni'. La tabella utenti è quella dove sono salvati tutti i tuoi utenti, la tabella sessioni è una tabella volatile diciamo, ovvero al suo interno saranno contenuti dei record in base se l'utente è connesso al sito o meno ( es. mi connetto al sito quindi il mio record viene salvato sulla tabella sessioni ).
Parlando di php il primo passaggio è l'autenticazione, quindi ticostruisci il tuo bel form con i campi user e pass.Una volta che l'utente li avrà inseriti, manderai questi dati al tuo script che eseguirà la seguente query:
Codice PHP:
$sql = "select * from utenti where username = '".$posted_username."' and password = MD5('".$posterd_password."') ";
Se la query estrae un record dal db allora procedi all'autenticazione, altrimenti rimendi l'utente al form di autenticazione.
Se l'utente esiste, ad esempio puoi fare uno script del genere:
Codice PHP:
session_start() // da inserire sempre in cima allo script quando si usano le sessioni
session_register('login'); // registriamo la variabile di sessione
$_SESSION['login'] == 'ok';
Quindi se l'utente esisteva nel db, si crea una variabile di sessione (login) che ha come valore 'ok'.
Infine per distinguere la zona 'riservata' dalla zona pubblica, questo è il codice da inserire nelle tue pagine:
Codice PHP:
if(session_is_registered('login') && isset($_SESSION['login']) && $_SESSION['login'] == 'ok' )
{
// contenuto area riservata
}
else
{
// contenuto area pubblica
}
Tutto qui.
Nell'area riservata ricorda di includere in tastino 'logout' che richiama una pagina con il codice per distruggere la sessione:
Codice PHP:
$_SESSION = array();
session_destroy();
Siccome le sessioni sono dei cookie, una volta che inizializzi la sessione questa sarà disponibile solo nella pagina successiva, quindi successivamente alla creazone della sessione ti consiglio di reindirizzare l'utente in una nuova pagina ( usa header() ad esempio )
Questo esempio è molto semplice, un po' troppo.
Però dovrebbe riuscire a farti comprendere il meccanismo.
Ciao
..dimenticavo #1
Dopo che hai creato la sessione inserisci nella tabella 'sessioni' un record che identifica quell'utente ( inserisci il suo user id e l'id di sessione ).
Con una query a questa tabella potrai sapere quanti sono connessi al tuo sito.
Quando l'utente clicca 'logout' elimini da questa tabella il record relativo all'utente.
Dovresti porti 2 domande adesso.
1) come faccio a identificare l'utente?
Risposta: ti salvi il suo id nella sessione
2) E se l'utente chiude il browser senza clikkare logout?
Risposta: puoi far girare uno script in ogni pagina del tuo sito che elimina i record più vecchi di tot minuti dalla tabella sessioni. Cosi un qualsiasi utente, a sua insaputa, farà pulizia della tabella ad ogni suo cambio pagina ( attenzione ad una cosa però: ad ogni cambio pagina, il campo che salva la data nella tabella delle sessioni deve essere aggiornato per l'utente connesso.... spero di essermi spiegato )