Возможно ли получить «индекс» сеанса PHP - PullRequest
0 голосов
/ 21 июня 2020

Я работаю над системой бронирования (для нашего собственного веб-сайта), которая достаточно хорошо использует СЕССИИ.

Есть много переменных СЕССИЯ (с подмассивами), и я периодически теряю их из виду. Есть ли простой способ получить «индекс» (или список) «первичных» переменных SESSION, таких как $_SESSION['booking'] и $_SESSION['guest'], без сброса всего содержимого каждой переменной. например, я (на данный момент) не хочу видеть $_SESSION['booking']['guestID'], $_SESSION['booking']['arrivalDate'] и т. д.

Я ожидаю, что, рассматривая $_SESSION как массив, будет (более сложный) подход, но надеюсь на что-нибудь попроще.

Ответы [ 2 ]

1 голос
/ 21 июня 2020

$_SESSION - это массив. Это сделано специально и даже не обязательно. Вы можете получить список ключей или l oop it как с любым другим массивом.

0 голосов
/ 21 июня 2020

Функция PHP array_keys дала мне то, что я хотел, и она намного проще, чем я ожидал.

$keys = array_keys($_SESSION);
echo 'SESSION keys: '; print_r($keys); echo '<br />';

которая дала мне то, что я хотел, распечатав:

SESSION keys: Array ( [0] => pan_image_array [1] => rates [2] => sitevars [3] => availy [4] => query )

Итак, затем я попытался с помощью foreach l oop по очереди сбросить каждый:

    foreach ($keys as $key_value) {
    echo 'Key Value is: ' . $key_value . '<br />';
    unset ($_SESSION[$key_value]);
    }
    // Then print SESSION contents again:
    $keys = array_keys($_SESSION);
    echo 'SESSION keys: '; print_r($keys); echo '<br />';

Ожидалось, что это покажет мне пустой SESSION в конце, что он и сделал, напечатав:

   SESSION keys: Array ( )

Казалось бы, это означает, что массив SESSION теперь пуст. Но когда я пошел посмотреть на СЕССИЮ в своем редакторе, первая переменная (индекс 0) все еще была там, как было подтверждено вторым (и последующим) прогоном, который напечатал:

  SESSION keys: Array ( [0] => pan_image_array )
  Key Value is: pan_image_array
  SESSION keys: Array ( )

Итак, на В конце каждого цикла у меня есть явно пустой массив SESSION, но при проверке первый индекс все еще там. Почему я не могу сбросить первую переменную, давая мне «пустую» СЕССИЮ? Это мой код или пустой SESSION не разрешен?

В целях тестирования я пытаюсь создать пустой SESSION, но без создания нового SESSION с другим SID (фактически новым именем файла) каждый раз Пробую новый тестовый прогон. Это позволяет мне держать файл SESSION открытым в редакторе и следить за изменениями.

...