¿Cómo imprimir todas las variables de sesión configuradas actualmente?

4 minutos de lectura

avatar de usuario
georgia

Sin tener que llamar a cada variable de sesión por su nombre, ¿hay alguna forma de mostrar el contenido de todas las variables de sesión configuradas actualmente?

echo '<pre>';
var_dump($_SESSION);
echo '</pre>';

O puedes usar print_r si no te importan los tipos. Si utiliza print_rpuedes hacer el segundo argumento TRUE por lo que devolverá en lugar de echo, útil para…

echo '<pre>' . print_r($_SESSION, TRUE) . '</pre>';

  • El OP pregunta por todas las sesiones.

    – apaderno

    26 de julio de 2010 a las 0:54

  • @kiamlaluno ¿Te refieres a las sesiones para cada usuario?

    – Alex

    26 de julio de 2010 a las 0:57

  • El título dice “¿Cómo imprimir todas las sesiones configuradas actualmente en PHP?”; si todo lo que OP quería era imprimir la sesión actual, entonces la pregunta está mal escrita.

    – apaderno

    26 de julio de 2010 a las 4:12

  • @kiamlaluno Creo que lo que quería se puede derivar de la pregunta. El título parece decir que quiere que se establezcan todas las sesiones para cada sesión, sin embargo, el cuerpo de la pregunta dice que las quiere sin tener que llamar a cada sesión por su nombre, lo que supuse que sería la clave en $_SESSION. Aunque podría haberse referido al hash que se asigna en la cookie, pensé que lo primero parecía más probable.

    – Alex

    26 de julio de 2010 a las 4:35

  • @kiamlaluno He editado la pregunta para que sea más precisa en lo que parece ser lo que realmente quería saber.

    – PhoneixS

    11 de enero de 2018 a las 9:40

avatar de usuario
linda cox

<?php
    session_start();
    echo "<h3> PHP List All Session Variables</h3>";
    foreach ($_SESSION as $key=>$val)
    echo $key." ".$val."<br/>";
?>

  • Esta es una mejor solución que imprime solo el contenido y no basura de matriz adicional.

    –Ryan Walker

    18 de octubre de 2017 a las 6:49

  • No funcionó para mí. Los objetos almacenados en la sesión (es decir, las fechas) no hacen eco.

    – CrazyTim

    6 de diciembre de 2019 a las 1:56

No es una forma sencilla, no.

Digamos que por “activo” quiere decir “no ha superado la vida útil máxima” y no se ha destruido explícitamente y que está utilizando el controlador de sesión predeterminado.

  • Primero, la vida útil máxima se define como una configuración php.ini y se define en términos de la última actividad en la sesión. Entonces, el mecanismo de “caducidad” tendría que leer el contenido de las sesiones para determinar la caducidad definida por la aplicación.
  • En segundo lugar, tendría que leer manualmente el directorio de sesiones y leer los archivos, cuyo formato ni siquiera sé en qué están.

Si realmente necesita esto, debe implementar algún tipo de controlador de sesión personalizado. Ver session_set_save_handler.

Tenga también en cuenta que no recibirá comentarios si el usuario simplemente cierra el navegador o se aleja de su sitio sin cerrar sesión explícitamente. Dependiendo de la cantidad de inactividad que considere el umbral para considerar una sesión “inactiva”, la cantidad de falsos positivos que obtendrá puede ser muy alta.

  • Los archivos parecen estar en este formato. last_active|i:1280043940;así que con un poco de división, creo que podríamos producir una lista (aunque no con precisión activo sesiones)

    – Alex

    26 de julio de 2010 a las 0:58


avatar de usuario
Mosín

esto funcionó para mí: –

<?php echo '<pre>' . print_r($_SESSION, TRUE) . '</pre>'; ?>

gracias por compartir código…

Array
(    
    [__ci_last_regenerate] => 1490879962

    [user_id] => 3

    [designation_name] => Admin
    [region_name] => admin
    [territory_name] => admin
    [designation_id] => 2
    [region_id] => 1
    [territory_id] => 1
    [employee_user_id] => mosin11
)

avatar de usuario
Joven

Podrías usar el siguiente código.

print_r($_SESSION);

  • la pregunta es para todas las sesiones, no solo para la sesión actual

    – mblanco

    26 de julio de 2010 a las 0:51


avatar de usuario
Atul Baldaniya

session_start();
echo '<pre>';var_dump($_SESSION);echo '</pre>';
// or
echo '<pre>';print_r($_SESSION);echo '</pre>';

NOTA: session_start(); la línea es imprescindible entonces solo podrá imprimir el valor $_SESSION

  • la pregunta es para todas las sesiones, no solo para la sesión actual

    – mblanco

    26 de julio de 2010 a las 0:51


avatar de usuario
locotim

Haga eco del objeto de la sesión como json. Me gusta json porque tengo una extensión de navegador que formatea json muy bien.

session_start();
echo json_encode($_SESSION);

¿Ha sido útil esta solución?