En este tutorial veremos el manejo y uso de cookies con PHP. Las cookies nos permiten guardar información de utilidad la cual podremos re-utilizar en casi cualquier momento. A diferencia de las sesiones, las cookies se guardan en el ordenador del usuario y tienen un tiempo definido de expiración, el cual es indicado al momento de la creación de la misma cookie.
Para lograr este objetivo, estaremos utilizando la función setcookie de PHP. Esta función recibe 3 parámetros principales los cuale son: nombre de la cookie, valor que contendrá la cookie y tiempo de expiración de la cookie. Para este ejemplo, estaremos almacenando el nombre que un usuario envíe mediante un formulario simple.
Lo primero que debemos hacer es crear el formulario. Este contendrá un campo de texto para ingresar el nombre y un botón de envío:
<html> <body> <form action="" method="post"> <p>Ingrese su nombre: <input type="text" name="nombre"></p> <p><input type="submit" name="enviar" value="Enviar"></p> </form> </body> </html>
El formulario debería quedar de la siguiente forma:
Ahora que ya tenemos el formulario el cual nos servirá como fuente de información para nuestra cookie, debemos crear el script el cual se encargará de procesar dicha información y guardarla en una cookie de manera correcta.
Los parámetros que utilizaremos para nuestra cookie serán los siguientes:
- Nombre: nombre_cookie
- Valor: campo_del_formulario
- Expiración: time() + 30*24*60*60
Podemos notar que el valor de expiración de la cookie no es como comúnmente leemos el tiempo. En este caso, este valor de expiración debe ser pasado en segundos. Para el ejemplo anterior, le estaremos diciendo que la cookie va a expirar en 30 días. Pero, ¿cómo llegamos a 30 días a partir de lo mostrado anteriormente? Es fácil, la función time() nos indica el tiempo actual expresado en segundos. La suma que se realiza a continuación es básicamente 30 días expresados en segundos. Con aquella formula estamos logrando que la cookie expire en casi 1 mes.
Ahora escribiremos el código que realiza lo que queremos:
if(isset($_POST["enviar"])) { $nombre = $_POST["nombre"]; setcookie("nombre_cookie", $nombre, time() + 30*24*60*60); //guardamos la cookie echo "El valor de la cookie nombre_cookie es: " . $_COOKIE["nombre_cookie"]; //imprimimos el valor }
Cabe notar que luego de ser guardada la cookie, podemos acceder a su valor mediante el arreglo superglobal $_COOKIE. Aquél arreglo tiene como índice el nombre de la cookie. El código completo se muestra a continuación:
<?php if(isset($_POST["enviar"])) { $nombre = $_POST["nombre"]; setcookie("nombre_cookie", $nombre, time() + 30*24*60*60); //guardamos la cookie echo "El valor de la cookie nombre_cookie es: " . $_COOKIE["nombre_cookie"]; //imprimimos el valor } ?> <html> <body> <form action="" method="post"> <p>Ingrese su nombre: <input type="text" name="nombre"></p> <p><input type="submit" name="enviar" value="Enviar"></p> </form> </body> </html>
Si todo ha ido bien, deberíamos poder ver lo siguiente en pantalla: