Можно ли проверить сеанс без запуска?
Причина, о которой я прошу, - приложение, которое я разрабатываю, имеет интегрированный интерфейс администратора. Поэтому, когда администратор регистрируется, они просматривают те же страницы, что и пользователи, для внесения изменений. Поля и параметры отображаются на основе пользовательских привилегий.
Это вызывает две проблемы.
Один. Поскольку сеанс запущен, я не могу включить функции кеширования браузера, поскольку отправляемые заголовки всегда:
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Я использую smarty для вывода шаблонов и не могу реализовать:
$smarty->cache_modified_check = true;
отправить 304, не измененный, поскольку сеанс уже запущен. Использование вышеуказанного smarty param было бы идеальным решением для кеширования браузера для меня.
Два - это то, что каждый пользователь, использующий сайт, запускает сеанс, сеансовый каталог заполняется ненужными сеансами.
Я мог бы просто уничтожить сеанс, если пользователь не вошел в систему, но затем каждую загрузку одной страницы, пользователь будет создавать и удалять сеанс. Это плохая практика?
Итак, если бы я мог просто проверить, существует ли активный сеанс без запуска, все мои проблемы будут решены. Есть идеи? Не отправляет ли браузер cookie сеанса при запросе страницы?
Что-то в идеале:
if (session_exists) {
session_start();
$users->priv = $_SESSION['priv'];
}
else {
$users->priv = guest;
}
--------------- В ответ на Тони Миллера ---------------
При использовании session_id() у вас уже должен быть сеанс, чтобы он возвращал идентификатор.
session_start();
echo session_id($_SESSION);
или вы можете установить идентификатор для сеанса перед началом сеанса сеанса
session_id("adfasdf");
session_start();
echo session_id($_SESSION);
//prints "adfasdf"
Ни один из них не помогает мне. Если я что-то не хватает.