Chose Language:
comments
Author: Admin/Publisher |finished | checked

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_start

Con 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.

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 de session_start() entre los archivos, no podra acceder a los datos de session.

Por ejemplo, si tienes 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.

// File 1:
session_start();
$_SESSION['username'] = 'Marco Aurelio';

// File 2:
// Without session_start(), $_SESSION['username'] won't be accessible
echo $_SESSION['username']; // Output: Undefined variable: $_SESSION
(checked)

La variable superglobal $_SESSION

https://blastcoding.com/sesiones-en-php/#$_SESSION

Es 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.

No sobrecargues las sesiones con variables de sesión innecesarias.

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_destroy

La 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.

nunca utilice unset sobre $_SESSION

Constantes predefinidas

https://blastcoding.com/sesiones-en-php/#constantes_predefinidas

SID(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/#funciones

Las 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

(PHP 4 >= 4.0.3, PHP 5, PHP 7, PHP 8)

session_cache_limiter — Get and/or set the current cache limiter

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

session_write_close — Write session data and end session

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

session_cache_expire — Get and/or set current cache expire

(PHP 4 >= 4.3.2, PHP 5, PHP 7, PHP 8)

session_regenerate_id — Update the current session id with a newly generated one

(PHP 4 >= 4.4.0, PHP 5, PHP 7, PHP 8)

session_commit — Alias of session_write_close()

(PHP 5 >= 5.4.0, PHP 7, PHP 8)

session_register_shutdown— Session shutdown function

session_status — Returns the current session status

(PHP 5 >= 5.6.0, PHP 7, PHP 8)

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

(PHP 7 >= 7.1.0, PHP 8)

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_desuso

Las 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

Category: php
Something wrong? If you found an error or mistake in the content you can contact me on Twitter | @luisg2249_luis.
Last 4 post in same category

Comments