Проблема с сессией в PHP

Рейтинг: -1Ответов: 1Опубликовано: 07.02.2023

Ситуация такая: был написан сайт и залит на хост, проблем с подключением к базе данных, сессией не было вообще. Стало необходимо перенести этот же сайт на другой домен. Я использовал рег.ру. Я создал копию всех файлов, отвязал домен от хоста, потом привязал нужный, зашёл в панель управления и залил свои файлы обратно(я ничего не менял в коде).

Захожу на сайт goodzone.site (ни в коем случае не реклама, проект лично для узкого круга лиц) и встречаю проблему, во первых:

Ignoring session_start() because a session is already active...

Погуглил в инете, нашёл решение, в месте ошибки я заменил простое подключение к сессии на подключение с предварительной проверкой:

    <?php
        session start() // БЫЛО
    ?>
    <?php
        // СТАЛО:
        if(!isset($_SESSION))
        {
            session_start();
        }
    ?>

Тут возникает сам вопрос, почему такого не было раньше, сайт работал целый месяц и подобной ситуации не возникало?

Давайте рассмотрим ситуацию дальше, может для опытного программиста появятся зацепки: У меня на сайте в начале каждого файла запускается сессия. По ходу пользования туда записываются ошибки по типу "неправильный логин или пароль", потом эти данные вытаскиваются; если пользователь регистрируется, то в сессию записывается его данные. А проблема вот в чём: некоторые данные должны записываться по ходу пользования, но почему-то на сайте сразу при запуске выдает ошибку, приведу пример:

Undefined array key "id" in ... on line 5 

Хотя в файле нужный id запишется в сессию только после того, как пройдёт авторизация.

$id = $_SESSION['id'];

Весь код отрабатывал прекрасно на данном хосте до смены домена. Хочется отметить, что в путях проблем нет.

Я в бэкэнде пару месяцев, не могу понять, где зайцы прячутся в данной ситуации, тяжело описать суть проблемы чётко и понятно, поэтому использую такую подачу материала.

Ответы

▲ -1Принят

Ваша проблема решаемая, у вас включен режим логирования и предупреждений, ошибок от PHP. Для того, чтобы этого избежать, отредактируйте файл .htaccess. Пропишите следующие строки:

php_flag display_startup_errors off
php_flag display_errors off
php_flag html_errors off

Либо в коде сайта в самом начале выполните код:

error_reporting(0)

Также, можно отредактировать php.ini в случае доступа к этому файлу на сервере. Найдите данную настройку:

display_errors = on

и отключите ее, чтобы не видеть сообщения-нотисы о сессии и прочих ошибках. Хотя подчеркну, что такой подход только сокроет ваши текущие ошибки, которые выскакивают на новом сервере. Чтобы их решить и исправить правильно было разобраться с кодом сайта, устранить дублирование регистрации в сессии. Для того, чтобы помочь в этом, мне нужно больше информации о вашем коде касательно сессии. Возможно, нужно добавить проверки логина в сессии, задать время сессии и т.д. кроме того высока вероятность, что на сайте вашем уже были логические ошибки в коде, которые выявились только сейчас.