Cookies Y Sesiones

Cookies y Sesiones

Las cookies es una información sobre el usuario que se almacena en el navegador del mismo.

Una diferencia entre cookie y sesión es que las cookies se almacenan en el ordenador del usuario y las sesiones se guardan en el servidor.

Cookie

Permite que los sitios web almacenen información del visitante

  • Recordar idioma
  • Anuncios personalizados
setcookie("noexpira",1);
setcookie("micookie",2, time() + 20);
// tiempo de expiración, despues de ese tiempo la cookie desaparecera

A través de la variable global _COOKIE

if(!isset($_COOKIE["micookie"]) && !isset($_COOKIE["noexpira"]) ){
    setcookie("noexpira",1);
    setcookie("micookie",2, time() + 20);
}else{
    echo "micookie ya esta definida  \n";
    echo "<br>";
}
var_dump($_COOKIE);

Para eliminar una cookie en PHP, puedes utilizar la función setcookie() y establecer su tiempo de expiración en el pasado. Al establecer la fecha de expiración en un momento anterior al actual, el navegador eliminará la cookie.

// Establecer la fecha de expiración en el pasado (por ejemplo, hace una hora)
setcookie("miCookie", "", time() - 3600, "/");
// También es buena práctica eliminar la cookie en la variable $_COOKIE
unset($_COOKIE['miCookie']);

Session

  • Caracteres aleatorios que forman una identificación única para cada usuario.
  • Paginas distintas pueden acceder a variables comunes. (Puedo navegar entre varias páginas y no tengo que logearme, solo la primera vez)
  • Se almacenan en el servidor

Antes de iniciar una sesión

Se puede definir un id y el nombre de la sesion

session_id("22"); //Establece el id de la sesion
session_id(); //Asi se obtendria y si no lo hemos definido nos da uno por defecto incremental

// Por defecto las sesiones tienen el nombre definido en php.ini
session_name("miSesion"); //Cambiar el nombre de la sesion

//Importante, tanto si definimos el id, como si lo obtenemos, solo lo podemos hacer una vez por metodo, antes de iniciar la sesion

Iniciar la sesión

Para poder interactuar con el array global $_SESSION primero hay que hacer un session_start

session_start();
echo session_id(); // Podriamos ver ahora si, el valor definido anteriormente
echo session_name(); // Podriamos ver ahora si, el valor definido anteriormente

// Los datos que queremos guardar lo hacemos en el array asociativo _SESSION
$_SESSION["user"] = "user";
$_SESSION["password"] = "password";
var_dump($_SESSION);

Cerrar la sesion

session_unset(); // quita las variables definidas dentro de session
session_destroy(); // borra la sesion

Sesiones entre varias páginas

Para compartir la información entre diferentes páginas hay que hacer un session_start() en cada página para mantener la sesión activa.