Для моей Joomla! Расширение 3.8+ Мне нужно иметь возможность находить и удалять (отменять связь) файлы сеансов PHP (называемые «sess_» + идентификатор сеанса), которые будут храниться в session_save_path, например, / TMP. Я понимаю, что именно PHP хранит файлы сессий, то есть не Joomla! (Обработчик сессии Joomla! Установлен на «PHP»)
Мой вопрос: будет ли файл сеанса PHP, созданный с помощью Joomla! веб-сайт ВСЕГДА будет доступен для чтения / записи через PHP-код моего расширения, который является частью того же Joomla! установить?
Дополнение: позже я понял, что в своем вопросе я опустил слово «всегда», которое я сейчас добавил.
Дополнение: более подробное объяснение того, чего я пытаюсь достичь.
Как я уже сказал, у меня есть Joomla! сайт, на котором пользователи могут войти.
Вопрос касается ТОЛЬКО когда Joomla! настроен с обработчиком сеанса, установленным на «PHP» (вместо «базы данных») Когда Session Handler - это «база данных», проблем нет.
В общих чертах я хочу добиться следующего (с обработчиком сеанса Joomla!, Установленным на 'PHP'):
1> Пользователь открывает браузер A и заходит на сайт, а Joomla!
записывает связанный идентификатор сеанса плюс идентификатор пользователя в базу данных.
2> Один и тот же пользователь открывает другой браузер B (возможно, с другим IP)
и хочет зайти на тот же сайт.
3> Поскольку пользователь уже зашел на сайт через браузер A,
он / она не имеет права войти в систему снова и будет представлен
кликабельная ссылка, которая уничтожит все остальные его сеансы, включая
один с браузером A (мы записали идентификаторы сеанса всех остальных
сеансы).
Простая session_destroy () на шаге 3 только частично делает свое дело, потому что детали разрушенного сеанса вновь появляются через некоторое время в Joomla! бэкэнд, а также в Joomla! сессионный стол. Хотя это не мешает Joomla! передний конец, это не чисто, и я хочу избежать этого, чтобы сделать его дураком.
Безусловно, лучшим решением было бы, если бы я мог удалить файл сеанса PHP (например, в dir / tmp и с именем 'sess _....'). Я проверил это, и он работал нормально. Однако ... он полагается на то, что у вас всегда есть доступ для удаления к файлу сеанса PHP (с использованием session_save_path () и unlink ($ session_file_path)), и это основа вопроса, который я написал.
Я обнаружил, что удаление файла сеанса PHP не всегда возможно; это зависит от конфигурации PHP провидора. Поскольку я разрабатываю это коммерческое приложение, процесс должен работать со всеми конфигами, включая те, которые не разрешают удалять доступ к файлу сеанса.
Я продолжу поиск решения и опубликую его здесь, когда найду.