Cześć,
Utworzyłem stronę wg własnego framework MVC, zgodnie ze sztuką z książki Marcina, mam jednak problem z czasem sesji. Strona w php 7.4 i IIS10
w index.php mam:
session_set_cookie_params(3600); session_start();
Po upływie godziny bez aktywności jak wchodzę np. na home/start to wyskakuje mi błąd
PHP Notice: Undefined index: user_data in ….
Natomiast w kontrolerze home dla start mam:
public function start(){ if(!isset($_SESSION['is_logged_in'])){ header('Location: '.ROOT_URL.'home'); } $this->returnView('start'); }
tablica user_data sesji jest wykorzystywana na stronie start, ale skoro sesja się skończyła to powinna zadziałać funkcja isset dla $_SESSION[‘is_logged_in’] i przejść do home, gdzie home to jest strona logowania bez żadnych zmiennych sesji.
Nie mam pomysłu dlaczego nie działa sprawdzenie tej zmiennej. Jakieś pomysły?
Hej Daniel,
samo wykonanie polecenia header nie spowoduje, że kod PHP przestanie się wykonywać i zostaniesz magicznie przeniesiony do nowej podstrony. Ta funkcja dodaje jedynie wpis do nagłówka zwracanej odpowiedzi przez serwer.
Obstawiam, że sprawdzenie wykonuje się poprawnie, a jedynie dalsza część kodu psuje Twoje zamiary.
To, co możesz zrobić, to wstawić metodę returnView w bloku else, wtedy widok zostanie zwrócony tylko wtedy, gdy zmienna faktycznie istnieje. Możesz też, zaraz po wywołaniu funkcji header, wstawić po prostu exit(); czyli zakończyć procesowanie dalszego kodu PHP. Wtedy rezultatem będzie pusta strona z nagłówkiem informującym o przekierowaniu na inną lokalizację.