Оператор php сеанса

#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 назначения данных.