Sesión PHP y cookies PHP con ejemplo
⚡ Resumen inteligente
En PHP, tanto las cookies como las sesiones conservan el estado a través del protocolo HTTP sin estado, pero almacenan los datos de forma diferente. Este tutorial explica cómo las cookies guardan pequeños archivos en el cliente, cómo las sesiones conservan los datos en el servidor y cómo crear, leer y destruir cada una con código funcional.

¿Qué es una cookie?
Una cookie es un pequeño archivo con un tamaño máximo de 4 KB que el servidor web almacena en el ordenador del cliente.
Una vez que se ha configurado una cookie, todas las solicitudes de página siguientes devuelven el nombre y el valor de la cookie.
Una cookie solo puede leerse desde el dominio desde el que se emitió. Por ejemplo, una cookie establecida utilizando el dominio www.guru99.com no puede leerse desde el dominio carrera.guru99.com.
La mayoría de los sitios web en Internet muestran elementos de otros dominios como publicidad. Los dominios que sirven estos elementos también pueden establecer sus propias cookies. Se conocen como cookies de terceros.
Una cookie creada por un usuario sólo puede ser visible para él. Otros usuarios no pueden ver su valor.
La mayoría de los navegadores web tienen opciones para deshabilitar las cookies, las cookies de terceros o ambas.
Si este es el caso, entonces PHP responde pasando el token de la cookie en el URL.
El diagrama que se muestra a continuación ilustra cómo funcionan las cookies.
Aquí,
1) Un usuario solicita una página que almacena cookies.
2) El servidor instala la cookie en el ordenador del usuario.
3) Otras solicitudes de página del usuario devolverán el nombre y el valor de la cookie.
¿Por qué y cuándo utilizar Cookies?
- HTTP es un protocolo sin estado; las cookies nos permiten tracLas cookies registran el estado de la aplicación mediante pequeños archivos almacenados en el ordenador del usuario. La ruta donde se almacenan depende del navegador. Internet Explorer suele guardarlas en la carpeta Archivos temporales de Internet.
- Personalización de la experiencia del usuario: esto se logra permitiendo a los usuarios seleccionar sus preferencias. Las solicitudes de página posteriores se personalizan según las preferencias establecidas en las cookies.
- Tracking las páginas visitadas por un usuario
Creando cookies
Veamos ahora la sintaxis básica que se utiliza para crear una cookie.
<?php setcookie(cookie_name, cookie_value, [expiry_time], [cookie_path], [domain], [secure], [httponly]); ?>
AQUÍ,
- “setcookie” es la Función PHP utilizado para crear la cookie.
- “cookie_name” es el nombre de la cookie que el servidor utilizará para recuperar su valor de la variable de matriz $_COOKIE. Es obligatorio.
- “cookie_value” es el valor de la cookie y es obligatorio.
- “[expiry_time]” es opcional; se puede usar para establecer el tiempo de caducidad de la cookie, por ejemplo, 1 hora. El tiempo se establece usando la función time() de PHP más o menos un número de segundos mayor que 0, es decir, time() + 3600 para 1 hora.
- “[ruta_cookie]” es opcional; se puede utilizar para configurar la ruta de las cookies en el servidor. La barra diagonal “/” significa que la cookie estará disponible en todo el dominio. Los subdirectorios limitan el acceso de cookies al subdominio.
- “[dominio]” es opcional; se puede utilizar para definir la jerarquía de acceso a las cookies, es decir
www.cookiedomain.comsignifica todo el dominio mientraswww.sub.cookiedomain.comlimita el acceso a las cookies awww.sub.cookiedomain.comy sus subdominios. - “[secure]” es opcional; por defecto es falso. Se utiliza para determinar si la cookie se envía mediante HTTPS si se establece en verdadero, o mediante HTTP si se establece en falso.
- “[httponly]” es opcional. Si se establece en verdadero, entonces los lenguajes de scripting del lado del cliente como JavaScript No se puede acceder a la cookie.
Nota: La función setcookies de PHP debe ejecutarse antes de la etiqueta de apertura HTML.
Veamos ahora un ejemplo que utiliza cookies.
Crearemos un programa básico que nos permita almacenar el nombre de usuario en una cookie que caducará a los sesenta segundos.
El siguiente código muestra la implementación del ejemplo anterior "cookies.php".
<?php setcookie("user_name", "Guru99", time()+ 60,'/'); // expires after 60 seconds echo 'the cookie has been set for 60 seconds'; ?>
Salida:
the cookie has been set for 60 seconds
Recuperando el valor de la cookie
Crea otro archivo llamado “cookies_read.php” con el siguiente código.
<?php
print_r($_COOKIE); // output the contents of the cookie array variable
?>
Salida:
Array ( [PHPSESSID] => h5onbf7pctbr0t68adugdp2611 [user_name] => Guru99 )
Nota: $_COOKIE es una variable superglobal integrada de PHP. Contiene los nombres y valores de todas las cookies establecidas.
El número de cookies y su tamaño están limitados por el navegador, normalmente en torno a 50 cookies por dominio y 4 KB por cookie.
Probando nuestra aplicación. Supongamos que has guardado tus archivos PHP en una carpeta llamada phptuts.
- Paso 1: abre tu navegador web e ingresa el URL http://localhost/phptuts/cookies_read.php
Nota: Solo se ha mostrado una matriz vacía
- Paso 2 – navegue hasta el URL http://localhost/phptuts/cookies.php
- Paso 3: vuelva a la primera pestaña y haga clic en el botón de actualizar.
Espera un minuto y vuelve a hacer clic en el botón de actualizar. ¿Qué resultados obtuviste?
Eliminar las cookies
- Si desea destruir una cookie antes de su tiempo de vencimiento, entonces establezca el tiempo de vencimiento en un tiempo que ya haya pasado.
- Crea un nuevo archivo llamado cookie_destroy.php con el siguiente código.
<?php setcookie("user_name", "Guru99", time() - 360,'/'); ?>
- Repita los pasos 1 a 3 de la sección anterior sobre cómo recuperar los valores de las cookies.
- Abra el panel de URL http://localhost/phptuts/cookie_destroy.php
- Cambie a la URL http://localhost/phptuts/cookies_read.php¿Qué resultados muestra?
¿Qué es una sesión?
- Una sesión es una variable global almacenada en el servidor.
- A cada sesión se le asigna una identificación única que se utiliza para recuperar los valores almacenados.
- Cada vez que se crea una sesión, se almacena una cookie que contiene el ID de sesión único en el ordenador del usuario y se devuelve con cada solicitud al servidor. Si el navegador del cliente no admite cookies, el ID de sesión único de PHP se muestra en el URL.
- Las sesiones tienen la capacidad de almacenar datos relativamente grandes en comparación con las cookies.
- Los valores de la sesión se eliminan automáticamente cuando se cierra el navegador. Si desea almacenar los valores de forma permanente, debe almacenarlos en la base de datos.
- Al igual que la variable de matriz $_COOKIE, las variables de sesión se almacenan en la variable de matriz $_SESSION. Al igual que las cookies, la sesión debe iniciarse antes que cualquier etiqueta HTML.
¿Por qué y cuándo utilizar Sessions?
- Desea almacenar información importante, como el ID de usuario, de forma más segura en el servidor, donde los usuarios malintencionados no puedan manipularla.
- Quiere pasar valores de una página a otra.
- Buscas una alternativa a las cookies en navegadores que no las admiten.
- Desea almacenar variables globales de una manera más eficiente y segura en comparación con pasarlas como argumentos. URL.
- Estás desarrollandoping una aplicación como una tiendaping carrito que debe almacenar temporalmente información con una capacidad superior a 4 KB.
Crear una sesión
Para crear una sesión, primero debe llamar a la función session_start de PHP y luego almacenar sus valores en la variable de matriz $_SESSION.
Supongamos que queremos saber cuántas veces se ha cargado una página. Podemos usar una sesión para ello.
El siguiente código muestra cómo crear y recuperar valores de las sesiones.
<?php session_start(); // start the session if(isset($_SESSION['page_count'])) { $_SESSION['page_count'] += 1; } else { $_SESSION['page_count'] = 1; } echo 'You are visitor number ' . $_SESSION['page_count']; ?>
Salida:
You are visitor number 1
Destruyendo variables de sesión
La función session_destroy() se utiliza para destruir toda la sesión de PHP.
Si desea eliminar solo un elemento de sesión, utilice la función unset().
El siguiente código ilustra cómo utilizar ambos métodos.
<?php
session_destroy(); // destroy entire session
?>
<?php unset($_SESSION['product']); // destroy product session item ?>
session_destroy elimina todos los datos de la sesión, incluidas las cookies asociadas a la misma.
La opción `unset` solo libera las variables de sesión individuales. Los demás datos permanecen intactos.




