batuhan_polat adlı üyeden alıntı: mesajı görüntüle
Bu işi en iyi COOKIE ile çözebilirsin.
En basit yöntemi anlatayım. Sen buna göre geliştirebilirsin.

1. İlk giriş yapan kullanıcı giriş yaptığında benzersiz random bir token kodu oluştur.
2. Bunu DB'ye login olunan kullanıcı adı için kaydet.
3. Daha sonra 2 adet COOKIE oluştur. Biri giriş yapanın kullanıcı adı diğeri ise oluşturulan token kodu.
Örnek:
localStorage.setItem("username", $username);
localStorage.setItem("login_token", $token_code);
4. Daha sonra sayfanın başına kural koy.
Eğer SESSION yoksa COOKIE kontrol etsin var mı diye.
Eğer username ve token olan COOKIE var ise DB ile kontrol et.
<?php
if(!isset($_SESSION['logged_user']) && (isset($_COOKIE['username'], $_COOKIE['login_token']))){ // Eğer SESSION yoksa COOKIE kontrol et
  // Aynı kullanıcı adına sahip token var mı diye kontrol et.
  $check_user = $db->users()->where(['username'=>$_COOKIE['username'], 'token'=>$_COOKIE['login_token'] ])->fetch();
  // Eğer DB true dönerse hemen yeni bir SESSION oluşturup oturumu başlat.
  if(isset($check_user['id']])){
    $_SESSION['logged_user '] = $check_user;
  }
}
?>
Not: DB sorgusunu ben kendi kullandığım framewok'e göre hızlıca yazdım. Siz nasıl DB sorgulaması yapıyorsanız öyle sorgulama yapmanız gerekmekte.
session ile çözebiliyosak öyle yapmayı tercih ederim yani süresi sınırsız yapılamıyo ama sürekli sıfırlayıp 5 dakikada bir süresini 10 dakika yapıcaksa yine mantıken sınırsız olmuş olucak, ama en kötü böyle yapıcam teşekkürler