SESSIONES EN PHP

No pidas a la divinidad, lo que no puedas conservar una vez obtenido.

Demófilo

Este año parece que va mas rápido y cada vez mas rápido. Que no me ha permitido del todo compartir nuevos textos aquí en esta trinchera linuxera. Pero bueno estamos con actitud que es lo que cuenta y hoy vamos a tocar un tema importante. SESSIONES. Y lo que me orillo tocar este tema es la parte en que tenemos un pequeño detalle en ALUX, y al ser este sistema una tecnología web , se caduca la session en x lapso de tiempo. Esta bien para los módulos administrativos , pero para el modulo de cobranza “La terminal”. No es muy conveniente que la sesión caduque demasiado rápido. Es molestoso para el vendedor tener que estar ingresando sus claves. Pues bien es momento de resolver esa issue de una vez por todas.

Debemos tener en cuenta que el manejo de sesiones depende mucho del lenguaje de programación. Pero el principio es el mismo. Conversar datos entre una pagina y otra, hasta el finalización correcta de dicho programa.

SESIONES EN PHP

Las sesiones son una forma sencilla de almacenar datos para usuarios de manera individual usando un ID de sesión único. Esto se puede usar para hacer persistente la información de estado entre peticiones de páginas. Los ID de sesiones normalmente son enviados al navegador mediante cookies de sesión, y el ID se usa para recuperar los datos de sesión existente.

La sesiones en PHP son almacenadas en una ARRAY GLOBAL de nombre $_SESSION. Si ustedes quieren agregar información a una sesion podrian hacer lo siguiente :

<?php 
// iniciar una session
session_start();
// crear variables de sesiones
$_SESSION["empresa"] = "junglaCODE";
$_SESSION["nombre"] = "monolinux"
// mostrar las variables de session
var_dump($_SESSION)
// eliminar una variable de session
unset($_SESSION["empresa"]);
// mostrar las variables de session
var_dump($_SESSION)
// destruye todas las sesiones
session_destroy()

Este es todo un show que implica algo mas de profundidad en el ambito de PHP por lo que dejare el link de su pagina oficial para poder entrar mas a detalle > https://www.php.net/manual/es/book.session.php

SESIONES EN CODEIGNITER

Entramos en el mundo de los frameworks y aquí es donde muchas de las cosas simples son de cierta manera un poco mas fácil. Atravez de sus librerías. Pues bien CI tiene la librería session la cual nos ahorra mucho tiempo y su manera de uso es la siguiente :

<?php
// cargar desde el autoload
$autoload['libraries'] = array('session);
// cargar la libreria esto se hace desde el controlador
$this->load->library("session");
// Crar una variable de session
$this->session->nombre = "monolinux";
// imprimir una variable 
echo $this->session->userdata("nombre");
// saber si una variable existe
var_dump($this->session->has_userdata("clave"));
// eliminar una session
$this->session->unset_userdata(“nombre”);
// destruir una sesion
$this->session->sess_destroy();

El tema es algo extenso pero todo esta muy bien documentado en su pagina oficial de codeigniter, Lo cual pueden echarle un vistazo para ampliar sus conocimientos > https://codeigniter.com/userguide3/libraries/sessions.html

COMO HACER QUE DURE MAS LAS SESIÓN?.

Bueno me queria ver un poco mas pro contando mas a profundidad este pedo de las sesiones pero tienen razón no he resuelto el problema de las tiempo sesiones. Como anterior mente dijimos. Lo que queremos es que nuestra terminal tenga mas tiempo de vida en nuestra session esto para evitar que el vendedor este logeando cada x lapso de tiempo.

Hay muchas maneras de resolver esto y las listare.

  • Desde el archivo php.ini. editando el parámetro session.gc_maxlifetime y session.cookie_lifetime. No recomendado por que comprometemos la seguridad del sistema y los sistemas que estén alojados en ese servidor.
  • Desde el .htaccess. agregando las siguientes lineas. php_value session.gc_maxlifetime y php_value session.cookie_lifetime. Se mejora la seguridad ya que solo se vería afectado el sistema donde se asigne el .htaccess. Pero que pase si después se migra a un Nginx. Pues no va funcionar. En fin next
  • En el controlador , clase o archivo donde quiere que se aumente el tiempo. ini_set(“session.cookie_lifetime”,$valor) y ini_set(“session.gc_maxlifetime”,$valor);. interesante pero no estariamos usando codeingiter y eso del tutifruti no me agrada. NEXT
  • Tempdata $this->session->mark_as_temp(‘item’, $valor); función que modifica el tiempo de expiración de una session. EL valor se debe especificar en segundos. Por lo que hagan su conversión. > https://codeigniter.com/userguide3/libraries/sessions.html#tempdata

Bueno espero que les sea de utilidad este artículo y nos vemos para la próxima. Cualquier duda de como adapte tempdata a mi algoritmo mandar un comentario

Referencias
- https://parzibyte.me/blog/2019/06/19/sesiones-codeigniter/

-https://blog.junglacode.org/time-machine/lecturas/usando-codeigniter4/

- https://www.youtube.com/watch?v=Rsh-ii_VRcA

Deja un comentario

Tu dirección de correo electrónico no será publicada.