Переменная Session PHP теряется и идентификатор сессии меняется при каждом запросе

я нашел много ответов об этой проблеме, но ничего не решило мою проблему — поэтому я хочу показать вам свой код и надеюсь, что кто-то может найти ошибку ..

У меня есть стандартная форма HTML, которая передает некоторые данные с POST в следующий файл .php, где я получаю его и сохраняю в переменные сеанса. Я использую переменные сеанса по двум причинам:

  1. если кто-то перезагрузит страницу, она должна показать ту же информацию, что и раньше.
  2. Мне нужны переменные в следующих файлах php.

Вот код:

session_start ();

// Обработка переменных на post и reloaded-page
если (Исеть ($ _ POST [ "locId"])  isset ($ _ POST ["dateId"]))
{

$ locId = htmlspecialchars ($ _ POST ["locId"]);
$ dateId = htmlspecialchars ($ _ POST ["dateId"]);

$ _SESSION ["locId"] = $ locId;
$ _SESSION ["dateId"] = $ dateId;

echo "Переменные сессии установлены: locId =". $ _SESSION ["locId"]. "dateId =". $ _SESSION [ "dateId"];

} elseif (isset ($ _ SESSION ["locId"])  isset ($ _ SESSION ["dateId"])) {

эхо "получить его от сессии";
$ locId = $ _SESSION ["locId"];
$ dateId = $ _SESSIOn ["dateId"];

} еще {

$ load_error = 1;
$ status = "alert alert-danger";
$ message = "дерьмо, здесь нет переменных";

}

Первый вызов работает нормально — переменные сеанса установлены, и эхо дает правильные значения. После перезагрузки страницы я получаю эхо «получить его из сеанса», но мои переменные не имеют значений.

я также проверил мой session_id () при первом вызове и перезагрузке .. они НЕ совпадают.

Я тестирую простой файл test.php, где я начинаю сеанс с переменной и спрашиваю переменную в следующем файле. Работает нормально: — /

Это просто проблема с моим кодом выше. Я думаю, что мой веб-сервер работает правильно. Но какие есть причины для смены идентификатора сеанса и потери значений переменных сеанса?

0

Решение

Черт! Чтобы написать правильно, это все …

Я нашел свою ошибку.

Посмотрите на код в моем вопросе. Вторая переменная сеанса — $ _SESSIOn [«dateId»] .. n — строчные! Если я напишу это правильно и завершу в верхнем регистре, он работает.

Кроме того, session_id больше не является chaging, и я могу вывести session_id () столько, сколько нужно … но одна ошибка в $ _SESSIOn меняет все. Новый session_id при каждом вызове, … странно.

Узнал что-то еще раз 🙂 Спасибо всем за ответы и ваше время! Я надеюсь, что смогу помочь тебе в будущем

2

Другие решения

Ну, вашу ошибку довольно легко найти. На самом деле ваш код работает отлично. Но посмотрите на эту часть:

  echo "get it from session";
$locId    =   $_SESSION["locId"];
$dateId   =   $_SESSIOn["dateId"];

Что ж, вы присваиваете значения сеанса двум переменным, но на самом деле вы просто пропустили их вывод в любом месте. Вот почему вы получаете «получить его из сеанса», но тогда ничего не отображается, вам нужно echo их.

Просто добавьте echo и он будет отображать ваши переменные отлично 🙂

echo "get it from session";
$locId    =   $_SESSION["locId"];
$dateId   =   $_SESSIOn["dateId"];

echo $locId;
echo $dateId;
0

Попробуй это:

идентификатор сессии();

session_start ();

-1
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector