Допустимо ли открывать, а затем закрывать сеанс для внешнего модуля?

Я пишу небольшой многоразовый менеджер пользователей для своих проектов, который будет использовать такие сервисы, как facebook, persona.org для входа в систему. С точки зрения каждой сети, это включение и пара эхо. Однако он использует $_SESSION, поэтому мне нужно его инициализировать. Для этого я использую этот код в include.php:

<?php
if(session_id() == '') {
  if (headers_sent()) {
    throw new Exception ("You must include this file before sending any header.");
    }
  session_start();
  $NoSession = 1; // Leave everything as it was before
  }

// MAIN CODE HERE

if ($NoSession) {
  session_destroy();
  }

Хорошая ли идея уничтожить сеанс с помощью session_destroy() или допустимо оставить сеанс открытым в этой ситуации? Моя цель при его уничтожении состоит в том, чтобы оставить среду переменных такой, какой она была до включения кода, оставив наименьший возможный след.


person Francisco Presencia    schedule 14.09.2013    source источник


Ответы (1)


Вполне приемлемо оставить его открытым — он не занимает много места. session_destroy() на самом деле не закрывает сеанс — вам нужно немного больше (см. пример в документации).

Также стоит сказать, что вам нужно вызвать session_start();, чтобы использовать $_SESSION переменных, даже если сеанс остался после последнего посещения страницы.

person George Brighton    schedule 14.09.2013
comment
Чтобы обеспечить бесшовную интеграцию. Если они/я уже где-то session_start();, нет необходимости менять какой-либо код, чтобы включить UserManager. - person Francisco Presencia; 14.09.2013