Может ли сеанс истечь при использовании функции включенного файла?

У меня есть переменная сеанса, которая была инициирована в index.php.

<?php
  $sid = session_id();
  if (empty($sid) {
    session_start();
  }

  //value of the variable can be changed and saved before coming back to the index
  if (!isset($_SESSION['context'])){
    $_SESSION['context'] = 1;
  }

  //...
?>

Позже сценарий используется для создания или обновления записи в базе данных.

entryupdate.php:

<?php
  include_once("template.php");
  /*....*/

  $sid = session_id();
  if (empty($sid)) {
    session_start();
  }

  /*....*/

  //Create a new entry, context is not given in the $input_object at this point.
  $template = new Template($input_object);
  $context = $template->getContext();
?>

template.php - это сценарий, в котором определен только объект шаблона, поэтому я не называю в нем $session_start, мое объяснение состоит в том, что он всегда будет вызываться сценариями, включая его, как в случае, который я здесь описываю. Вот соответствующий код:

<?php
  class Template
  {
    private $m_context;
    //other private parameters

    function __construct($arguments_object){
      if (!is_null($arguments_object)){
        /*....*/
        $this->m_context = $arguments_object->context;
        /*....*/
      }
    }

    /*....*/

    function getContext(){
      if (!empty($this->m_context)){
        return $this->m_context;
      }else{
        //this would be our case, as the parameter was not initialized yet.
        return $_SESSION['context'];
      }
    }

    /*....*/

   }
?>

Теперь мой коллега обнаружил ошибку, и в результате расследования я обнаружил, что $context был настроен на NULL. Когда я попытался воспроизвести проблему, контекст был правильно инициализирован. И, честно говоря, за несколько лет использования этого инструмента это первый раз, когда проблема такого рода возникла.

Я также проверил, ни в коем случае не сбрасываю эту конкретную переменную сеанса.

Делаю ли я здесь ложное предположение, полагая, что template.php найдет переменную сеанса при запуске сеанса в entryupdate.php, где она была включена и использована?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
6
44
0

Другие вопросы по теме