Почему то анулируется $_SESSION после перезагрузки страницы?

Ссылка скопирована
PHP
1 ответ

всем здравствуйте! Столкнулся с какой-то магией вне хогвартса, как говорится.

Есть код:

session_start();     $ifAdmin = 1;     if(isset($_SESSION["loged"])){ $ifAdmin = 2; }     echo $ifAdmin;      if($_POST["enter"]){         $password = filter_input(INPUT_POST, "password", FILTER_SANITIZE_SPECIAL_CHARS);          if($password == "admin"){             $_SESSION["loged"] = "yes";             echo"yes";         }     }

session_start(); $ifAdmin = 1; if(isset($_SESSION["loged"])){ $ifAdmin = 2; } echo $ifAdmin; if($_POST["enter"]){ $password = filter_input(INPUT_POST, "password", FILTER_SANITIZE_SPECIAL_CHARS); if($password == "admin"){ $_SESSION["loged"] = "yes"; echo"yes"; } }

Да, проверка на наличие топорна, но это я уже от безысходности сделал. Почему то после прохождения условия пароля $_SESSION не сохраняется. Если вывести сразу после записи - все окей, а вот когда страница уже перезагрузиться - пустота, помогите пожалуйста разобраться, заранее всем спасибо!

Дополнительно:

Ubuntu_Pro, Ничего не произошло... Добавилось NULL перед единичкой и все

  • Ubuntu_Pro, Разве $_SESSION должен быть массивом? Всегда так делал просто и никогда не было проблем, выводит int(1)
  • Ubuntu_Pro, Так а что это значит и как бороться, я пока не понял(
  • Я прям стесняюсь спросить, а что возвращает функция session_start() true или false - ?
    подробнее можно почитать тут: session_start()
    P.S. Вот что еще вспомнил, может быть нарушен механизм установки сессий Если перед вызовом функции клиенту уже передавался какой-либо вывод (теги, пустые строки, пробелы, текст и т.п.)
    Дополнительно попробуйте setcookie(....) адаптировав под свою версию PHP

    • Блин, она не запускается. Как это пофиксить?
    • RED2190, P.S. Вот что еще вспомнил, может быть нарушен механизм установки сессий Если перед вызовом функции клиенту уже передавался какой-либо вывод (теги, пустые строки, пробелы, текст и т.п.)
      Дополнительно попробуйте setcookie(....) адаптировав под свою версию PHP
      Вы успели оставить комментарий, пока я дополнял свой ответ
    • Daemon23RUS, Господи, была пустая строка перед <?php спасибо большое за помощь! как же глупо...
    • RED2190, глупо не это, а то что вы не читаете ошибки, в которых РНР вам прямо строчку указывает, где лишний вывод
    • Я прям стесняюсь спросить, а при чем здесь setcookie?
    • Ипатьев, у меня не было ошибок, в том то и проблема
    • RED2190, верно. в ЭТОМ-то и проблема. В том что ошибки ЕСТЬ, а "у вас" их нету. То есть вы их не видите. А должны. Если это домашний сайт, то ошибки должны выводиться на экран, чтобы вы их видели. А не сидели и гадали, в чем проблема.
      Если сайт боевой, то ошибки пишутся в лог. Куда вы первым делом должны смотреть при возникновении любых проблем
    • Ипатьев, Спасибо
    • Ипатьев, 100%, но для новичков по видимому вывод ошибок сродни цитате одного боксера "А сегодня в завтрашний день не все могут смотреть. Вернее, смотреть могут не только лишь все. Мало, кто может это делать."
    • Ипатьев,

      Я прям стесняюсь спросить, а при чем здесь setcookie?

      у ТС "черный ящик" что у него с хранением сессий на стороне PHP - вопрос, причина неизвестна. Логи он не видит/не читает. Трафик не видит/не анализирует. А 2й компонент - кука, проверить просто. Как следствие вектор поиска сужается.

    • Daemon23RUS, в каком смысле "проверить"? Что именно проверить?
    • Ипатьев, Обычно, мы полагаемся на прошлый опыт, я приведу пример реального кейса. За балансиром стоит 4 сервера, которые на php обрабатывают забросы, сессии хранятся в 5м сервере в редисе. Плюс один "чудный" процесс использует редис, а по окончании дропает базу. все хорошо до тех пор пока в конфиге "чудного процесса" номер базы не начинает совпадать с сессионной базой PHP. Не спрашивайте как так вышло, это боль. Так вот в этом кейсе сессионная переменная умирала регулярно без единого сообщения об ошибке.
      И ответ, что именно проверить: в проблемной точке кода имеется ли возможность установить куку, т.к сервер уже мог отдать какие то данные.
    • Daemon23RUS, ну попытается он поставить куку. Она не ставится. Вместо одного черного ящика у него теперь два. Я не понимаю, в чем профит.
    • Ипатьев, не ставится по ошибке, решает проблему - профит, не ставится по "религиозным соображениям" ini_set("session.use_trans_sid",true); и в путь
    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Роман IT Ответ

    Проблема с аннулированием $_SESSION после перезагрузки страницы может иметь несколько причин. Вот некоторые из них и способы их решения:

    1. Неправильная настройка сессий:
    Убедитесь, что вы вызываете session_start() в начале каждого скрипта, который использует сессии. Это должно быть выполнено до любого вывода на экран, включая пробелы и переносы строк.

    ```php

    ```

    2. Проблемы с куки:
    Убедитесь, что у вас включены куки в вашем браузере. Сессии в PHP по умолчанию используют куки для хранения идентификатора сессии. Если у вас отключены куки, то сессии не будут работать.

    3. Не правильный путь каталога сессий:
    Проверьте параметр session.save_path в файле php.ini. Убедитесь, что путь каталога сессий существует и доступен для записи.

    4. Превышение лимита сессий:
    Если ваш сервер достиг лимита файлов сессий, PHP может перестать записывать новые сессии. Увеличьте параметр session.save_path или очистите старые сессии.

    5. Проблемы с кешированием:
    Если вы используете какие-либо механизмы кеширования на вашем сервере, это может привести к проблемам с сессиями. Убедитесь, что вы правильно настроили кеширование для работы с сессиями.

    Если после проверки всех этих возможных причин ваша проблема с аннулированием $_SESSION после перезагрузки страницы все еще остается, попробуйте упростить свой код и убедитесь, что нигде не происходит перезапись $_SESSION сессии.

    Надеюсь, что эти советы помогут вам решить проблему с аннулированием $_SESSION после перезагрузки страницы.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно