Ale nic nie wyciąnąłeś z tego co Ci napisałem. Po pierwsze wywal to wszystko:
ini_set('session.gc_maxlifetime',10
); ini_set('session.cookie_lifetime',10
);
session_start() podczas załadowania całej aplikacji ma zawsze występować
tylko raz i ma to być druga linia pliku, zaraz po
<?php.
Dalej, zaraz pod session_start, wrzuć
session_regenerate_id(true);. Następnie do sesji masz przypisać tablicę z danymi, czyli oprócz Twojego
test (zakładam, że to jest nick usera obecnie zalogowanego), masz zapisać
czas ostatniej aktywności:
$_SESSION['tester'] = array( 'nick' => 'test',
'ip' => $_SERVER['REMOTE_ADDR'],
'user_agent' => $_SERVER['HTTP_USER_AGENT'],
'last_active' => time());
I teraz masz sprawdzać to w ten sposób:
$session_time = 10; // czas trwania sesji w minutach
$session_time = $session_time * 60;
if ( isset($_SESSION['tester']) ) // jeśli sesja została przypisana... {
$ip = $_SERVER['REMOTE_ADDR'];
$uagent = $_SERVER['HTTP_USER_AGENT'];
if ( $uagent !== $_SESSION['tester']['user_agent'] || $ip !== $_SESSION['tester']['ip'] ) // jeśli ip lub user agent nie zgadza się z tym przypisanym podczas sesji...
{
header("location: index.php"); // oraz przekierowujemy na główną stronę, żeby dane się przeładowały oraz żeby usera nie zostawić np. w edycji profilu... }
if ( ($_SESSION['tester']['last_active'] + $session_time) < time() ) // jeśli przekroczono długość sesji... {
header("location: index.php"); // oraz przekierowujemy na główną stronę, żeby dane się przeładowały oraz żeby usera nie zostawić np. w edycji profilu... }
}
Tylko jeszcze pamiętaj, żeby po tym całym sprawdzaniu dodać aktualizacje czasu ostatniej aktywności sesji na obecny czas bo inaczej to zawsze po przekroczeniu tego 10min będzie wylogowywać.
if ( isset($_SESSION['tester']) ) {
$_SESSION['tester']['last_active'] = time(); }
napisałem Ci praktycznie gotowca.