Almacenar todos los datos de POST en SESSION

Tengo más valores (más de 20) de $ _POST como este …

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

NOTA: he impedido que haya valores de inyección de SQL.

Mi pregunta es ¿puedo saber si hay alguna forma de almacenar todos estos valores POST en SESSION de una vez? En lugar de este método …

$_SESSION['name'] = $name; etc

cualquier respuesta será muy apreciada. Gracias.

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

Eso creará una matriz de los valores de publicación en una sola variable de sesión. Los valores serían accesibles como

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

Puede agregar una matriz a otra.
$_POST y $_SESSION son solo arreglos.
Tenga en cuenta que las claves en la segunda matriz tienen prioridad en caso de duplicados.

 $_SESSION += $_POST; 

Sin embargo, no veo bien este final, ya que el lado del cliente puede inyectar cualquier cosa que quiera a la sesión, EG secuestrando la identificación de sesión de sus usuarios.

Si busca variables de sesión que se establecen con la misma clave que la matriz publicada, puede usar esto:

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

Esto hará que su matriz $ _POST se convierta en variables basadas en la clave de matriz y también configure la sesión al mismo tiempo. A continuación, puede acceder a su publicación con el name $_SESSION['name'] o $name .

Esto significa que no necesitará usar: $name = $_POST['name']; nunca más. Como el código anterior establecerá la variable de nombre para usted y también establecerá la variable de sesión.

La mejor explicación para pasar variables ya sea con formulario de publicación o redirección de ubicación de encabezado dentro de php consulte mi respuesta en este hilo: ¿Cómo pasar variables recibidas en cadena GET a través de un redireccionamiento de cabecera php?