#php #session
#php #сеанс
Вопрос:
как я могу передать это в оператор, который просто поместит все $ _POST[] в сеанс без необходимости записывать каждую строку.
<?php session_start();
$_SESSION['s_type'] = $_POST['s_type'];
$_SESSION['s_uname'] = $_POST['s_uname'];
$_SESSION['s_email'] = $_POST['s_email'];
$_SESSION['s_promo'] = $_POST['s_promo'];
$_SESSION['s_ctry'] = $_POST['s_ctry'];
?>
Комментарии:
1. Прямое присвоение может перезаписать любую переменную вашего
$_SESSION
пользователя, передающую данные post. это очень опасно. не так ли?
Ответ №1:
$_SESSION['POST'] = $_POST;
echo $_SESSION['POST']['s_type'];
Ответ №2:
Если вам не нравится вложенность Marc B,
foreach ($_POST as $k => $v){
$_SESSION[$k] = $v;
}
Комментарии:
1. Errr … теперь, когда я думаю об этом, не делайте этого, пока вы не добавите некоторую проверку входных данных. Что, если бы кто-то использовал $_POST[‘user_id’]? Делай то, что сказал Марк Б.!
2. Я думаю, это лучше и элегантнее… И не беспокоиться о $_POST[‘user_id’] . Мы можем сделать что-то вроде $ _SESSION[«POST $ k»] = $ v;
Ответ №3:
Если у вас есть причина выбирать, какие $_POST
значения попадают в хранилище сеанса, а какие нет (например, если у вас была КАПЧА, которую нужно было вводить каждый раз повторно, или номер кредитной карты, или что-то конфиденциальное), создайте массив $_POST
ключей для хранения и повторите его:
// We won't store s_email in $_SESSION. All others stored
$store_to_session = array('s_stype','s_uname','s_promo','s_city');
foreach ($store_to_session as $s) {
$_SESSION[$s] = $_POST[$s];
}
Ответ №4:
$_SESSION = $_POST;
Создаст копию массива $ _POST и назначит его $ _SESSION, который выполняет то, что вы просите. Но это также уничтожит все элементы массива в массиве $ _SESSION. Поэтому я рекомендую цикл, который будет поддерживать элементы массива уже в $ _SESSION .
foreach ($_POST as $key=> $val){
$_SESSION[$key] = $val;
}
Ответ №5:
Попробуйте это 😉
Вместо прямого назначения $_POST
в $_SESSION
создайте вложенную оценку, подобную этой:
$_SESSION['putScopeNameHere'] = $_POST;
В этом случае ваши session
данные также будут доступны для вас после post
назначения данных.