Как я могу проверить, заблокирован ли $ _SESSION?

#javascript #php #jquery #ajax #session

#javascript #php #jquery #ajax #сессия

Вопрос:

Я написал CMS с несколькими вызовами AJAX POST для получения данных.

Один из которых проверяет, регистрируется ли пользователь каждые x секунд, проверяя,

 isset($_SESSION['key']) 
  

Это отлично работает, но если $ _SESSION заблокирован, т.Е. Он используется с другим файлом в течение длительного периода, например, при загрузке изображения, он попросит пользователя войти в систему, даже если сеанс действителен (поскольку AJAX не может получить к нему доступ во время использования).

Я попытался использовать:

  session_write_close();
  

на странице загрузки файла, чтобы попытаться освободить его, но, похоже, это не помогает.

AJAX «проверить вход» даже не записывает в сеанс, но, похоже, он даже не может его прочитать или просто проверить, установлена ли переменная () .

Есть ли способ для моего php-скрипта различать заблокированный сеанс и, возможно, несуществующий? Или любые другие идеи были бы ace, спасибо! 🙂

Комментарии:

1. зачем вам проверять, что пользователь регистрируется каждые X секунд, а не просто при загрузке страницы?

2. @Dagon: период бездействия может привести к истечению сеанса, пока страница все еще открыта; затем, когда пользователь возвращается, он может попытаться, скажем, ввести некоторые данные, и будет отклонен, когда сервер ответит, что они вышли из системы. Лучше UX сообщить им, что им нужно будет снова войти в систему, когда это произойдет, а не после того, как они попытаются выполнить действие (и потенциально потерять данные, связанные с этим действием, в зависимости от того, требует ли вход в систему перенаправления на отдельную страницу).

3. я понимаю, когда мой банк делает это, но для cms это бессмысленно, и я, гад, большинство этого не делает.

4. Разве само действие проверки того, вошли ли они в систему, не позволит им войти в систему? Это противоречит цели создания открытой страницы и выхода из нее (если не считать режима ожидания ноутбука или чего-то еще).

5. @Brad: Если да, то это может быть преимуществом. Истечение срока действия сеанса может существовать по нескольким причинам, но если основной причиной является предотвращение накопления сеансов, которые браузеры больше не сохраняют и не действуют по соображениям безопасности, может быть желательно поддерживать сеанс в режиме реального времени, пока браузер открыт.