Sesiones. Crear variables de sesión con PHP

 
Las variables comunes en PHP tienen un ámbito de aplicación de script, es decir son eliminadas al acabar el script donde se han creado. Las variables de sesión son útiles para guardar valores entre diferentes páginas (scripts) de una misma Web, lo cual, es muy útil en muchas ocasiones. Por ejemplo para guardar el identificador de un usuario que se haya logado y así no pedirle en cada página otra vez su usuario y contraseña.

Estas variables guardan por lo tanto la información de una sesión de un usuario, mientras este siga activo (siga realizando peticiones a nuestra web) y caducará cuando el usuario este inactivo durante un tiempo determinado. Este tiempo se puede configurar mediante el archivo PHP.ini estableciendo el valor de session.gc_maxlifetime = XXX, donde 'XXX' sería el valor en segundos que deseemos establecer por defecto. También se puede hacer mediante código con la función session_cache_expire(XXX), donde 'XXX' sería el valor en minutos con la particularidad de que si después en otro script, se usasen sesiones y no se estableciese esta variable, se reiniciaría a su valor por defecto, por lo que habría que llamar a esta función desde todos los sitios donde se usasen las sesiones.

Por último recordar que las variables de sesión se guardan en el servidor por cada usuario. Es decir si creásemos una variable de sesión con un valor de 100 bytes y tuviésemos 10 usuarios activos ocuparíamos 1.000 bytes (10 * 100), si tuviésemos 100, tendríamos 10.000 y así sucesivamente, por lo que sería recomendable que los datos de estas variables fueran lo mas escuetos posibles.

El código de ejemplo, es muy sencillo:
  1. Primero inicializa la información de sesión con session_start, esta función envía cabeceras, por lo que debe estar antes de enviar cualquier dato, incluso un espacio o intro.
  2. A continuación comprueba si ha llagado el valor del formulario y si es así establece el valor de la variable de sesión asignándolo al array asociativo $_SESSION.
  3. Después muestra el valor de esta variable, en caso de que esté establecida.
  4. Las lineas comentadas, establecerían la caducidad de la sesión.

Si en algún momento quisiésemos destruir la sesión (por ejemplo un usuario que hace 'logout'), lo podríamos hacer con la función Session_destroy()


HTML:
<html>
    <head>
        <title>Rellene el formulario</title>
    </head>
    <body>
        <form name='formulario' id='formulario' method='post' target='_self'>
        <p>Variable <input type='text' name="variable" id="variable"></p>
        <input type='submit' value='Enviar'>
        </p>
        </form>
    </body>
</html>

Código:
<?php
// Copyright © McAnam.com
// http://www.mcanam.com/articulos/PHP.php?id=17
    
    session_start();
    
    if (isset($_POST["variable"]))
        $_SESSION["variable"] = $_POST["variable"];
    
    if (isset($_SESSION["variable"]))
        echo $_SESSION["variable"];
    
    // Descomentar para establecer valor de caducidad a 15 minutos
    // session_cache_expire(15);
    
?>

Links relacionados:
Variables globales de servidor con $_SERVER
Ocultar, mostrar errores de ejecución de PHP
Conectarse a una Base de Datos MySQL
Proteger una página con Password (JavaScript)


Para cualquier duda, consulta, sugerencia, opinión, colaboración, etc; no dude en ponerse en contacto con nosotros

Copyright © 2002-2017 [McAnam]. Reservados todos los derechos.
www.mcanam.com