Как часть 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 } });