Убедитесь, что пользователь вошел в систему с изменением страницы ajax

Как часть webapp, которую я создаю, мне нужно будет проверить, зарегистрирован ли пользователь при каждом изменении страницы. На обычном сайте, отличном от ajax, это легко, потому что я могу просто разместить условный оператор сеанса PHP в заголовке, а заголовок, вызываемый при каждом изменении страницы, определит, отображается ли страница входа в систему, или нет, но видя в качестве файла заголовка установлен только один раз в приложении ajax, которое находится на начальной загрузке, как я могу проверить, когда пользователь делает запрос страницы ajax, действительно ли сеанс действителен? Поскольку я использую pushState и popState, я знаю, что могу установить условие для запуска всякий раз, когда изменяется URL-адрес, но я точно не знаю, как закодировать проверку для запуска, когда это происходит.

Любая помощь приветствуется.

Благодарю.

Вы должны вернуть false, чтобы вы могли сделать что-то умное, например перенаправить пользователя на страницу входа в систему или изменить заголовок, как вы указываете в своем вопросе, вместо того, чтобы убить скрипт с помощью die('false')

т.е.

 if(!isset($_SESSION['valid_user'])) { return false; } 

или еще лучше, верните json-объект в свой скрипт и используйте jquery / javascript для изменения заголовка.

 $response = array(); if(!isset($_SESSION['valid_user'])) { $response['logged_in'] = false; } else { $response['logged_in'] = true; } // return to jquery for handling return json_encode($response); 

в любом случае, вы говорите, что вы создаете веб-приложение, поэтому вы можете попробовать обработать событие, а не убить программу.

Создайте страницу php, которая проверяет сеанс и возвращает true или false.

Поэтому, если пользователь не вошел в систему, всякий раз, когда вы выполняете запрос ajax и сеанс не имеет информации о пользователе, возвращается только строка false, которую вы можете использовать для проверки обратного вызова ajax для отображения правильной информации

НАПРИМЕР

 if(!isset($_SESSION['user'])) die('false'); 

Затем в вашем обратном вызове ajax вы можете проверить, является ли ответ ложным, или обрабатывать данные другим способом. EG

 $.ajax({"url" : url, "success" : function(response){ if(response == 'false') { // display a login screen or redirect the user to a login page // EG showLogin() or document.location = '/login.php'; } else { // to something else with the response if the user is logged in } });