Sesión PHP y cookies PHP con ejemplo
¿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 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 sólo se puede leer desde el dominio desde el que se emitió. Por ejemplo, una cookie configurada utilizando el dominio www.guru99.com no se puede leer 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 desactivar las cookies, las cookies de terceros o ambas.
Si este es el caso, PHP responde pasando el token de cookie en la URL.
El diagrama que se muestra a continuación ilustra cómo funcionan las cookies.
Aquí,
1) Un usuario solicita una página que almacene 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 rastrear el estado de la aplicación utilizando pequeños archivos almacenados en la computadora del usuario. La ruta donde se almacenan las cookies depende del navegador. Internet Explorer generalmente las almacena en la carpeta Archivos temporales de Internet.
- Personalizar la experiencia del usuario: esto se logra permitiendo a los usuarios seleccionar sus preferencias. Las páginas solicitadas que siguen se personalizan en función de las preferencias establecidas en las cookies.
- Seguimiento de las páginas visitadas por un usuario
Creando cookies
Veamos ahora la sintaxis básica utilizada para crear una cookie.
<?php setcookie(cookie_name, cookie_value, [expiry_time], [cookie_path], [domain], [secure], [httponly]); ?>
AQUÍ,
- PHP “setcookie” es el Función PHP utilizado para crear la cookie.
- “cookie_name” es el nombre de la cookie que utilizará el servidor al recuperar su valor de la variable de matriz $_COOKIE. Es obligatorio.
- “cookie_value” es el valor de la cookie y su carácter obligatorio
- “[tiempo_expiración]” es opcional; se puede utilizar para establecer el tiempo de caducidad de la cookie, como 1 hora. La hora se establece usando las funciones PHP time() más o menos un número de segundos mayor que 0, es decir, time() + 3600 durante 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.com
significa dominio completo mientraswww.sub.cookiedomain.com
limita el acceso a las cookies awww.sub.cookiedomain.com
y sus subdominios. Tenga en cuenta que es posible tener un subdominio de un subdominio siempre que el total de caracteres no supere los 253 caracteres. - “[seguro]” es opcional, el valor predeterminado es falso. Se utiliza para determinar si la cookie se envía a través de https si está configurado como verdadero o http si está configurado como falso.
- “[Httonly]” es opcional. Si se establece en verdadero, entonces solo los lenguajes de secuencias de comandos del lado del cliente, es decir. JavaGuión no puede acceder a ellos.
Nota: la función php set cookie 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 caduca a los diez 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 súper global integrada en PHP.
Contiene los nombres y valores de todas las cookies configuradas.
El número de valores que
La matriz $_COOKIE puede contener depende del tamaño de la memoria establecido en php.ini.
El valor predeterminado es 1 GB.
Probando nuestra aplicación.
Supongamos que ha guardado sus archivos PHP en la carpeta phptus.
- Paso 1: abra su navegador web e ingrese la URL http://localhost/phptuts/cookies_read.php
Nota: Solo se ha mostrado una matriz vacía
- Paso 2: Navegador a la URL http://localhost/phptuts/cookies.php
- Paso 3: vuelva a la primera pestaña y luego haga clic en el botón Actualizar
Espere un minuto y luego haga clic en el botón Actualizar nuevamente. Que 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 del 1 al 3 de la sección anterior sobre cómo recuperar valores de cookies.
- Abre la URL http://localhost/phptuts/cookie_destroy.php
- Cambiar 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, una cookie que contiene la identificación de sesión única se almacena en la computadora del usuario y se devuelve con cada solicitud al servidor. Si el navegador del cliente no admite cookies, la identificación única de la sesión PHP se muestra en la 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 la identificación del usuario, de forma más segura en el servidor, donde los usuarios malintencionados no puedan controlarla.
- Quiere pasar valores de una página a otra.
- Quiere la alternativa a las cookies en navegadores que no las admitan.
- Quiere almacenar variables globales de una manera eficiente y más segura en comparación con pasarlas en la URL
- Está desarrollando una aplicación como un carrito de compras que tiene que 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 PHP session_start y luego almacenar sus valores en la variable de matriz $_SESSION.
Supongamos que queremos saber la cantidad de veces que se ha cargado una página, podemos usar una sesión para hacerlo.
El siguiente código muestra cómo crear y recuperar valores de sesiones.
<?php session_start(); //start the PHP_session function 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 todas las variables de sesión de Php.
Si desea destruir solo un elemento de la 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 con la sesión.
Desarmar solo libera las variables de sesión individuales.
Otros datos permanecen intactos.
Resum
- Las cookies son pequeños archivos que se guardan en el ordenador del usuario.
- Las cookies sólo se pueden leer desde el dominio emisor.
- Las cookies pueden tener un tiempo de caducidad, si no está configurado, la cookie caduca cuando se cierra el navegador.
- Las sesiones son como variables globales almacenadas en el servidor.
- Cada sesión recibe una identificación de identificación única que se utiliza para rastrear las variables de un usuario.
- Tanto las cookies como las sesiones deben iniciarse antes de enviar cualquier etiqueta HTML al navegador.