viksnamax
@viksnamax
All-in-One

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

Почему сразу не меняется значение переменной $_SESSION['login']?
В index.php по нажатия кнопки, отправляется ajax запрос(данные не отправляются) в файл enter_controller.php, далее в enter_controller.php присваивается значение переменной $_SESSION['login'] //изначально равное "guest" и возвращается обратно в index.php, где уже после успешного запроса выводиться значение переменной $_SESSION['login']. Проблема в том, что она не меняется сразу, а только после перезагрузки страницы

index.php
Если не перезагрузить страницу , console.log вернёт guest, а если перезагрузить, то значение переменной $_SESSION['login'] будет равно Hello
$.ajax({
                type: 'POST',
                async: true,
                url: 'php/enter_controller.php',
                success: function(data){
                    console.log("1: "+"<?php echo $_SESSION['login'];?>");
                }
            });


enter_controller.php
require "session.php";
$_SESSION['login'] = "Hello";


session.php
session_start();

if (!isset($_SESSION['login'])) {
    $_SESSION['login'] = "guest";
}
  • Вопрос задан
  • 247 просмотров
Решения вопроса 1
l3ftoverz
@l3ftoverz Куратор тега PHP
Rings of Saturn - The Husk
У тебя значение в сессии - зашито в код, что бы оно обновлялось при запрозе возвращай его новое значение при запросе.

success: function (data) {
  console.log(data);
}


require "session.php";
$_SESSION['login'] = rand(1, 50000);

echo $_SESSION['login'];


Ты не особо понял концепцию работы, ты JS генерируешь через PHP, значение в логе у тебя всегда будет статично.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
alex-1917
@alex-1917
Хорошо хоть в своей подписи указал, как на самом деле дела обстоят))
У вас ошибка. Системная. Не в коде... Вот она:

Вы зачем-то, впрочем, как и большинстов начинашек, попёрлись в глубины, перед этим как следует нагуглившись... Глубоко залазить в теорию - конечно же хорошо, только причем тут ваши попытки выползти из лабиринта и Тостер? Если бы вы адекватно задали вопрос - нужно получить такие-то данные и вывести их там-то (а это и есть суть вашей проблемы), вам бы давно ответили. Вы же нагуглились по самые помидоры, полезли в основы, до конца их не осознали, ничего не поняли, затем естсессно упёрлись в тупик и... бегом на Тостер...
При этом исходная задача осталась где-то далеко позади.

Это и называется системная ошибка.
таких системщиков мы отшиваем на первых трех вопросах собеседования...

Вы заслужили все эти ответы.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы