¿Qué puede guardarse en las sesiones PHP?

¿Qué puede guardarse en las sesiones PHP?

Conceptos
Es un hecho: las sesiones de PHP son una fuente de confusión y frustración para muchos desarrolladores. Desde mi punto de vista, el problema es que hay muchos puntos de fallo posible. En este artículo quiero detenerme sobre un punto que, si bien parece simple, tiene sus grises. Todo el mundo pre-supone que las sesiones son una suerte de baúl mágico donde puede guardarse cualquier cosa y, cual juego de rol, acompaña al héroe a donde vaya. La realidad no es tan así. Hay algunos objetos que no pueden ser almacenados en las sesiones PHP. Un ejemplo que veo con frecuencia es código similar a este: include("Conexion.php"); $Conexion = Conectar(); --> Donde conectar es una funcion que conecta a mysql $_SESSION['Conex'] = $Conexion; Y luego, al querer levantar el dato…
Leer más
Por qué se pierden las variables de sesión PHP

Por qué se pierden las variables de sesión PHP

Conceptos
Pocas cosas hay más frustrantes que ir a buscar algo donde sabés que lo dejaste y no encontrar nada. ¿Cómo es posible? Pusiste el session_start() al comienzo como Dios manda. El código es claro: $_SESSION['user'] = $user; ¿Qué puede ser más simple? Cuando hacés un echo $_SESSION['user'] en la misma página todo sale perfecto pero apenas clickeás en un link... nada por aquí, nada por allá. Y lo peor de todo es que el código funciona perfectamente en tu XAMPP pero en tu hosting no. ¿Cómo puede ser? Funcionó perfectamente bien durante meses y ahora, nadie sabe por qué, dejó de funcionar. Obviamente, dejar el problema sin resolver no es opción... ¿qué clase de sitio no recuerda al usuario que está logeado? No te preocupes, el manejo de sesiones en…
Leer más
Cómo funcionan las sesiones en PHP

Cómo funcionan las sesiones en PHP

Conceptos
Una fuente de mucha frustración y confusión para quienes arrancan con PHP es el manejo de sesiones. Hay muchas partes móviles y, a veces, tener todo esto en la cabeza marea... En este artículo intentaré hacer un repaso por cuáles son esas partes y cómo interactúan entre sí de modo que no te queden dudas respecto de cómo usar esta poderosa herramienta. Para qué sirven las sesiones Por supuesto que no puedo avanzar sin antes hablar de lo más importante: ¿para qué sirven las sesiones? O, dicho de otro modo: ¿por qué querrías complicarte la vida entendiendo todo esto? En pocas palabras: las sesiones sirven para compartir información no entre una página y otra (Un formulario HTML y el php que lo procesa por ejemplo), si no entre todas las…
Leer más
5 formas de reforzar la seguridad de tus sesiones en PHP

5 formas de reforzar la seguridad de tus sesiones en PHP

Seguridad
En un post anterior había mencionado cuáles son los riesgos a los que están sujetas las sesiones PHP. En este artículo voy a darte algunos tips para mejorar la seguridad de tus sesiones y dormir más tranquilo :) 1. Usa siempre HTTPS La mejor forma de reforzar la seguridad de tus aplicaciones (No sólo de las sesiones) es utilizar tráfico cifrado, de esta forma, aún si alguien logra capturar el tráfico le será virtualmente imposible leer el contenido. Puedes conseguir certificados gratuitos usando, por ejemplo, LetsEncrypt 2. Cambia el nombre de tu cookie de sesión El nombre por defecto de la cookie de sesión es PHPSESSID pero puedes cambiarlo usando session_name() o desde la configuración de php (La variable session.name). Al cambiar este dato harás más dificultoso para un atacante…
Leer más
¿Qué tan seguras son las sesiones de PHP?

¿Qué tan seguras son las sesiones de PHP?

Seguridad
Seguramente escuchaste alguna versión de estas preguntas: ¿Es posible que alguien modifique sus cookies, les otorgue diferentes privilegios o inicie sesión como un usuario diferente? ¿Puede alguien robar las variables mientras están guardadas en el lado del servidor? ¿Que tan posible es que alguien te copie una session para usarla en su navegador? Una de nuestras principales preocupaciones como desarrolladores de software es la posibilidad de que algún hacker pueda robar información que los usuarios han confiado a nuestras aplicaciones. Si eso llegara a suceder nuestros clientes podrían verse en serias dificultades (y por lo tanto, nosotros también). Existen muchos modos en que un atacante puede colarse en nuestros sistemas y, lamentablemente, las sesiones no están exentas de riesgos. Para qué sirven las sesiones en PHP Las sesiones de PHP…
Leer más
Cómo armar un carrito de compras con PHP

Cómo armar un carrito de compras con PHP

Cómo hacer para...
Tema popular si los hay, ¿cierto? :) Muchos clientes se acercan a cualquier desarrollador con la idea de agregar a su sitio un "carrito de compras" pero, cuando indagamos un poco más vemos que el tema no es tan simple. Por ejemplo: ¿sirve de algo el carrito de compras sin la posisbilidad de realizar el pago al final? Pero bueno, para no hacer un post enorme, comencemos por la parte del carrito propiamente dicho y dejemos el tema de los pagos para otro. Qué puede hacerse con un carrito de compras El carrito de compras es un espacio donde un visitante puede llevar registro de los productos que desea comprar. Desde el punto de vista técnico/funcional, debe ser posible: Ingresar productosQuitar productosVer los productos existentesConfirmar la compra Para poder ingresar…
Leer más
Cómo definir la configuración de la sesión en Symfony

Cómo definir la configuración de la sesión en Symfony

Cómo hacer para...
  Ante todo, una aclaración: PHP maneja las sesiones a través de cookies (Antiguamente también se podía propagar el ID de sesión vía URL, aunque es una práctica muy poco segura y, sinceramente, hace mucho que no lo veo). Bien, ahora... ¿qué cosas podrías querer cambiar de la configuración de la sesión? Varias. El nombre de la cookie El tiempo de duración El lugar donde se almacena la información del lado del servidor Sobre la segunda y la tercera, acá tenés un ejemplo de por qué querrías hacerlo :) Respecto de la primera, más que nada se trata de un tema de seguridad. Fijate esta captura de pantalla de la consola del navegador: El nombre PHPSESSID es el nombre por defecto que se le asigna a la cookie de sesión de…
Leer más
Cómo evitar la expiración de las sesiones en PHP

Cómo evitar la expiración de las sesiones en PHP

Cómo hacer para...
En un proyecto que hice para un cliente me sucedió algo que no había previsto: un formulario dinámico resultó muy largo para la persona que tenía que realizar la carga y, cuando terminó el sistema la deslogueó automáticamente y perdió su trabajo :( Analizando un poco el problema me di cuenta de que la sesión había expirado a pesar de que el usuario estaba interactuando con el sistema... sólo que no se estaba produciendo ninguna comunicación cliente-servidor, ya que toda la acción estaba pasando del lado cliente. A juzgar por algunos comentarios que he leído por ahí, como: Tengo un archivo sesion.php que se incluye en cada pagina del proyecto, para validar tanto si la sesión esta activa, como si la sesión ha expirado, estoy haciendo pruebas con 30 segundos…
Leer más