Sesiones en PHP
Más tarde o más temprano tendremos que crear sesiones en PHP para nuestros usuarios, si es que nuestra web permite el alta de los mismos
Iniciando una sesión con session_start()
https://blastcoding.com/sesiones-en-php/#session_startCon session_start()
podemos iniciar una sesión en PHP, en cualquier momento. Esta función iniciar una nueva sesión o reanudar la existente.
<?php session_start();
Recuerde que las sesiones se utilizan para guardar datos de la sesión mientras esta está abierta.
La variable superglobal $_SESSION
https://blastcoding.com/sesiones-en-php/#$_SESSIONEs un array asociativo que contiene variables de sesión disponibles para el script actual
php.net
En el siguiente caso puedo decir que le estoy asignando el valor de ELPEPE a la variable de sesión nombre
<?php session_start(); $_SESSION['nombre']="ELPEPE";
Por ejemplo, una vez que un usuario entre en la página luego de hacer un login.
¿En qué usar las variables de sesión?
Podría guardar datos del usuario en la sesión, estos podrían ser el nombre de usuario, un token, o algo que distinga al usuario, de esta manera se a donde tiene acceso el usuario.
No le recomendaría guardar un email o un password por ejemplo, ya que estos datos son información personal del usuario.
El hecho de utilizar la sesión para almacenar cualquier cosa puede llegar a ser peligroso para nuestra seguridad. Si me preguntas, solo deberías guardar un token con el cual identificar el usuario en el lapso de tiempo que dura la sesión.
Podría ser algo así:
En caso de tener por ejemplo preferencias del usuario, por ejemplo, preferencias de este o zona horaria de la persona, guárdalos directamente en base de datos.
Destruyendo una sesión con session_destroy()
https://blastcoding.com/sesiones-en-php/#session_destroyLa función session_destroy
destruye toda la información asociada con la sesión actual. No destruye ninguna de las variables globales asociadas con la sesión, ni destruye la cookie de sesión
Con esto quiere decir que si vuelvo a llamar session_start()
tendré los datos de la sesión que tenía antes en la variable de sesión.
Para borrar estos datos puede usar unset()
, ya que $_SESSION
es un array asociativo.
Teniendo en cuenta el ejemplo anterior en session_start()
.
<?php session_start(); unset($_SESSION['nombre']); session_destroy();
De esta manera borraré la variable nombre de la sesión.
unset
sobre $_SESSION
Constantes predefinidas
https://blastcoding.com/sesiones-en-php/#constantes_predefinidasSID
(string) – contiene tanto como el nombre de sesión como el ID en forma de "name=ID"
o un string vacio ""
si una id de sesión fue definida en una cookie de sesión apropiada. ID es el mismo id devuelto por session_id()
PHP_SESSION_DISABLED
(int) – retorna el valor de session_status()
en caso de que las sesiones estén des-habilitadas.
PHP_SESSION_NONE
(int)- retorna el valor de session_status() si las sesiones están habilitadas, aunque no existe una sesion.
PHP_SESSION_ACTIVE
– retornará el valor de session_status() si las sesiones están habilitadas y la sesión existe.
Funciones para sesiones en PHP
https://blastcoding.com/sesiones-en-php/#funcionesLas siguientes funciones están definidas tal cual en php.net, con la diferencia en este caso de que están ordenadas por disponibilidad de versiones. En caso de tener la versión 7.1 o mayores de PHP no deberías preocuparte por esto.
(disponibles desde PHP 4)session_name
— Obtener y/o establecer el nombre de la sesión actual
session_id
— Obtener y/o establece el ID de la sesión actual
session_decode
— decodifica la data de la sesión desde un string de sesión codificada(session_encode)
session_destroy
— Destruye toda la data registrada en una sesión
session_encode
— Codifica la data de la sesión actual como un string de codificado de sesión
session_get_cookie_params
— Get the session cookie parameters
session_module_name
— obtiene o define el módulo de la sesión actual
session_save_path
— Get and/or set the current session save path
session_set_cookie_params
— Set the session cookie parameters
session_set_save_handler
— Sets user-level session storage functions
session_start
— Start new or resume existing session
session_unset
— Free all session variables
session_cache_limiter
— Get and/or set the current cache limiter
session_write_close
— Write session data and end session
session_cache_expire
— Get and/or set current cache expire
session_regenerate_id
— Update the current session id with a newly generated one
session_commit
— Alias of session_write_close()
session_register_shutdown
— Session shutdown function
session_status
— Returns the current session status
session_abort
— Desecha los cambios en el array de sesión y finaliza la sesión
session_reset
— Re-initialize session array with original values
session_gc
— Realizar una recolección de basura de datos de sesión
session_create_id
— Create new session id
Funciones en desuso para sesiones de PHP
https://blastcoding.com/sesiones-en-php/#funciones_en_desusoLas siguientes funciones están en desuso y no se recomienda su uso, de hecho algunas de estas no funcionan en las versiones más nuevas de PHP
$HTTP_SESSION_VARS
— Contiene todas las variables de sesión, vea $_SESSION
session_is_registered
— Averiguar si una variable global está registrada en una sesión
session_register
— Registrar una o más variables globales con la sesión actual
session_unregister
— Deja de registrar una variable global de la sesión actual
Continuidad de las sesiones en PHP
En otras palabras, necesitas
session_start()
en los archivos para acceder a los valores de$_SESSION
. Si no tienes una continuidad desession_start()
entre los archivos, no podra acceder a los datos de session.Por ejemplo, si tienes
(checked)session_start()
en el primer archivo, pero no en el segundo, y luego en el tercer archivo sí lo tienes, podras acceder a los datos de session en el 3er archivo pero no en el segundo.