Sinon, pour un site j'ai fait ceci:
cookie connection_token avec une chaine random
dans ta db, tu as genre une table connections avec comme colonnes :
id, connection_token, created_at, updated_at, user_id
connection_token, le cookie (différent pour chaque connexion)
created_at, la connexion
updated_at, dernière chose effectuée
user_id, l'id de l'utilisateur
A chaque page, tu regardes si y'a un enregistrement dans la table qui correspond au connection_token:
Si oui => si l'utilisateur est connecté :
=> si l'user_id correspond : tu updates
=> si l'user_id ne corresspond pas : tu supprimes l'enregistrement est déconnectes
=> si l'utilisateur est déconnecté : tu supprimes l'enregistrement
Si non => si l'utilisateur est connecté : tu le déconnectes
=> si l'utilisateur est déconnecté : tu ne fais rien
Tu as juste à générer un token et l'enregistrement à la connexion, et à le supprimer dans les cas au dessus, ou a la déconnexion
J'espere avoir été clair, mais si tu as des questions ;)