Сохранение всех данных POST на СЕССИИ

У меня больше значений (более 20) от $_POST, как это...

$name = $_POST['name'];
$username = $_POST['username'];
$city = $_POST['city'];
$mobile = $_POST['mobile'];
$address = $_POST['address'];

ПРИМЕЧАНИЕ. Я предотвратил наличие значений из SQL-инъекции.

Мой вопрос: могу ли я знать, есть ли способ сохранить все эти значения POST в СЕССИИ сразу? Вместо этого метода..

$_SESSION['name'] = $name; и т.д.

любые ответы будут высоко оценены. Спасибо.

Ответ 1

$_SESSION['post-data'] = $_POST;

Это создаст массив значений post в одной переменной сеанса. Значения будут доступны как

$_SESSION['post-data']['name']
$_SESSION['post-data']['username']
...

Ответ 2

Вы можете добавить один массив в другой.
$_POST и $_SESSION - это просто массивы.
Обратите внимание, что ключи во втором массиве имеют приоритет в случае дубликатов.

$_SESSION += $_POST;

Тем не менее, я не вижу этого окончания хорошо, так как клиентская сторона может вводить все, что хочет на сеанс, E.G. захват вашего идентификатора сеанса пользователя.

Ответ 3

Если вы ищете переменные сеанса, которые заданы с использованием того же ключа, что и размещенный массив, вы можете использовать это:

foreach ($_POST as $key => $value) {
    ${$key} = $value;
    $_SESSION[$key] = $value;
}

Это сделает ваш массив $_POST в переменные на основе ключа массива, а также установите сеанс одновременно. Затем вы можете получить доступ к своему сообщению name с помощью $_SESSION['name'] или $name.

Это означает, что вам больше не нужно использовать: $name = $_POST['name'];. Поскольку приведенный выше код будет устанавливать для вас переменную имени, а также установить переменную сеанса.