Io faccio così:
session_start(), messo all'inizio di ogni pagina. questa funzione crea un file salvato sul server associato all'IP dell'utente o riesuma quello già esistente se è già stato creato in un'altra pagina.
in questo file imposti le variabile di sessione (detta così sembra difficile)
praticamente quando devi salvarti un dato relativo all'utente usi
$_SESSION['nome_della_variabile']="quello che devi salvare"
ad esempio
$_SESSION['login']=$id_login (che recuperi dal database o dal form o da dove preferisci)
una volta fatto questo finchè l'utente resterà loggato nel suo file di sessione sarà salvata la variabile login e il valore associato.
per differenziare utenti loggati da non loggati ti basta all'inizio di ogni pagina un
if(isset($_SESSION['login'])){
fai quello che devi fare per gli utenti loggati;
} else {
fai quello che devi per i non loggati
}
ad esempio se devi associare un valore per dei permessi usi
$_SESSION['permessi']=valore del permesso
per il nome utente
$_SESSION['nome']=$nomeutente (variabile in cui da qualche parte salvi il nome dell'utente)
poi nella home se vuoi scrivere Ciao NomeUtente
farai
$nome=$_SESSION['nome'];
echo("Ciao $nome")
al logout puoi fare due cose:
session_destroy()
che ti cancella la sessione (il tuo file sul server)
oppure unset($_SESSION['login'])
che ti lascia settata la sessione ma cancella il valore login e quindi rispetto al controllo di prima l'utente risulterà non loggato.
un ultima cosa:
se sul tuo server ci sono altri siti di altri proprietari, conviene salvare le sessioni in una cartella tua, perhè di default tutte le sessioni di tutti i siti sullo stesso server sono salvate insieme, e questo può creare problemi di sicurezza.
questo lo fai mettendo in ogni pagina prima di session_start()
ini_set("session.save_path","percorso della tua cartella delle sessioni");