#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: Если да, то это может быть преимуществом. Истечение срока действия сеанса может существовать по нескольким причинам, но если основной причиной является предотвращение накопления сеансов, которые браузеры больше не сохраняют и не действуют по соображениям безопасности, может быть желательно поддерживать сеанс в режиме реального времени, пока браузер открыт.