Ответ 1
$_SESSION['post-data'] = $_POST;
Это создаст массив значений post в одной переменной сеанса. Значения будут доступны как
$_SESSION['post-data']['name']
$_SESSION['post-data']['username']
...
У меня больше значений (более 20) от $_POST, как это...
$name = $_POST['name'];
$username = $_POST['username'];
$city = $_POST['city'];
$mobile = $_POST['mobile'];
$address = $_POST['address'];
ПРИМЕЧАНИЕ. Я предотвратил наличие значений из SQL-инъекции.
Мой вопрос: могу ли я знать, есть ли способ сохранить все эти значения POST в СЕССИИ сразу? Вместо этого метода..
$_SESSION['name'] = $name;
и т.д.
любые ответы будут высоко оценены. Спасибо.
$_SESSION['post-data'] = $_POST;
Это создаст массив значений post в одной переменной сеанса. Значения будут доступны как
$_SESSION['post-data']['name']
$_SESSION['post-data']['username']
...
Вы можете добавить один массив в другой. $_POST
и $_SESSION
- это просто массивы.
Обратите внимание, что ключи во втором массиве имеют приоритет в случае дубликатов.
$_SESSION += $_POST;
Тем не менее, я не вижу этого окончания хорошо, так как клиентская сторона может вводить все, что хочет на сеанс, E.G. захват вашего идентификатора сеанса пользователя.
Если вы ищете переменные сеанса, которые заданы с использованием того же ключа, что и размещенный массив, вы можете использовать это:
foreach ($_POST as $key => $value) {
${$key} = $value;
$_SESSION[$key] = $value;
}
Это сделает ваш массив $_POST в переменные на основе ключа массива, а также установите сеанс одновременно. Затем вы можете получить доступ к своему сообщению name
с помощью $_SESSION['name']
или $name
.
Это означает, что вам больше не нужно использовать: $name = $_POST['name'];
. Поскольку приведенный выше код будет устанавливать для вас переменную имени, а также установить переменную сеанса.
Лучшее объяснение передаваемых переменных либо с перенаправлением адреса столбца, либо заголовком внутри php, проверьте мой ответ в этом потоке: Как передать переменные, полученные в строке GET через перенаправление заголовка php?