#php #jsp #session
#php #jsp #сеанс
Вопрос:
У нас есть несколько веб-страниц, написанных на JSP, и несколько других, написанных на PHP.
Чего мы пытаемся достичь, так это того, что всякий раз, когда пользователь входит в систему (через страницу PHP), мы хотим сохранить информацию о сеансе (идентификатор пользователя, время входа и т. Д.) И использовать ту же информацию при доступе к страницам JSP.
Как мы можем обмениваться информацией о сеансах JSP и PHP друг с другом, используя один и тот же идентификатор сеанса?
Есть ли способ сделать это, или они автоматически совместимы друг с другом?
Комментарии:
1. Я бы предложил использовать общую таблицу базы данных для хранения информации о сеансе и просто написать свои собственные процедуры обработки сеанса для каждого языка.
2. Спасибо Scuzzy. Есть ли лучший способ сделать это? В этом случае мы должны удалить информацию о сеансе из базы данных при выходе из системы. Но что произойдет, если пользователь закроет браузер или отключит свою систему без выхода из системы? Мы остались с несколькими бесполезными записями в БД.
3. Хорошо, проблема с закрытием браузера пользователем может быть решена с помощью самого файла cookie, пустой или 0-истечение срока действия файла cookie (и, следовательно, идентификатора сеанса) при закрытии браузера. Оттуда вы можете создать свою собственную функцию сборки мусора для очистки таблицы сеансов, которые были неактивны в течение определенного периода. Самый простой способ справиться с этим — прямо перед проверкой данных для входа очистить старые строки на основе последней использованной метки времени, в идеале вы можете просто делать это перед каждым обновлением сеанса, чтобы гарантировать, что пользователи, которые слишком долго не подключались, автоматически выходят из системы.
Ответ №1:
У вас должно быть общее распределенное управление сеансами, которое страницы PHP и JSP будут использовать для извлечения сеансов. Вам также необходимо иметь обертки запросов для JSP и PHP, которые переопределяют getSession() и делегируют управление сеансами вашему пользовательскому распределенному управлению сеансами.
Я не знаю, как переносить запросы в PHP, но для JSP у вас может быть фильтр, который создаст оболочку запроса.
Общее распределенное управление сеансами должно заботиться о жизненном цикле управления сеансами, таком как:
- Создание сеансов, если сеанс не существует с заданным идентификатором.
- Сеанс поиска, если сеанс существует с заданным идентификатором.
- Аннулировать сеанс, когда пользователь выходит из системы, т.Е. Когда Страница делает сеанс недействительным.
- Аннулировать сеанс, если сеанс простаивает в течение заданного времени ожидания. Поток управления сеансом должен проверять сеансы с заданным интервалом и аннулировать сеанс, который превысил значение тайм-аута.