Volver al índiceCookies y sesiones (resumen)

Para deshabilitar las cookies en Firefox, hay que desmarcar la casilla de verificación "Aceptar cookies" en el menú Herramientas > Opciones > Privacidad > Usar una configuración personalizada para el historial.

Para deshabilitar las cookies en Internet Explorer 8, hay que elegir la configuración "Bloquear todas las cookies" en el menú Herramientas > Opciones de Internet > Privacidad.


Las cookies permiten que el servidor almacene datos en el ordenador del cliente.

// Las cookies deben crearse o destruirse antes de enviar ningún carácter al navegador.

// Para crear una cookie, se utiliza la función setcookie

setcookie('nombreCookie', valorCookie, momentoDestruccion);

// nombreCookie es el nombre con que identificará a la cookie.
//    Los nombres de cookie no deben coincidir con los nombres de los controles de los formularios
// valorCookie es el valor que se guarda en la cookie
// momentoDestruccion es el momento en que se borrará automáticamente la cookie, 
//    expresado como tiempo Unix. Para calcularlo se suele utilizar la expresion 
//    time()+$duracion donde $duracion es el número de segudos que debe 
//    permancer la cookie en el ordenador del cliente
//    Si se omite, la cookie se borrará al cerrar el navegador

// Los valores de las cookies se pueden consultar en cualquier página 
// del mismo dominio y se almacenan en la matriz $_COOKIE y en $_REQUEST
// (por eso no deben coincidir los nombres de las cookies con los de los controles de los formularios)

$dato = $_COOKIE['nombreCookie'];
$dato = $_REQUEST['nombreCookie'];

// Para borrar una cookie, basta con volver a crear la cookie con un tiempo anterior al actual

setcookie(nombreCookie, valorCookie, time()-3600);

Las sesiones permiten que PHP "recuerde" datos cuando el usuario cambia de página dentro de un mismo sitio web, sin necesidad de ir pasándola de página a página como controles ocultos.

// Para utilizar variables de sesión, cada página debe abrir la sesión:

ini_set('session.save_handler', 'files'); // Sólo si session.save_handler = user en php.ini
session_start();


// Una vez abierta la sesión, se pueden almacenar valores en la matriz $_SESSION:

$_SESSION['dato'] = $dato;


// Los valores almacenados se pueden recuperar en cualquier página
// en la que se haya abierto sesión desde el mismo navegador:

$dato = $_SESSION['dato'];


// Las sesiones se pierden si el usuario cierra el navegador o si se
// destruye la sesión desde el servidor:

session_destroy();

Ejemplos

Ejemplo: Contador del número de accesos a una página
<?php
//contador del número de accesos a una página por sesión.
session_start();
if (!isset($_SESSION['count'])) {
    $_SESSION['count'] = 0;
} else {
    $_SESSION['count']++;
}
?>
<html>
<head>
  <title>Contador de accesos</title>
</head>
<body>
<p>
<?php
print("Hola, has accedido a esta página ");
print($_SESSION["count"]);
print(" veces.");
?>
</p>
</body>
</html>
Hola, has accedido a esta página 2 veces.
Ejemplo: Configuración personalizada de los colores de una página.
<?php
session_start();

if (!isset($_SESSION['bgcol'])) {
    $_SESSION['bgcol'] = 0;
}

if (!isset($_SESSION['textCol'])) {
    $_SESSION['textCol'] = 0;
}

if(isset($_REQUEST['enviar'])) {
    $bgCol = traduce($_REQUEST['nbgCol']);
    $textCol = traduce($_REQUEST["ntextCol"]);
    $_SESSION["bgCol"] = $bgCol;
    $_SESSION['textCol'] = $textCol;
    print "<html>\n<head>\n<title>Elección de colores</title>\n</head>\n";
    print("<body bgcolor='$bgCol' text=\"$textCol\">");
} else {
    print "<html>\n<head>\n<title>Elección de colores</title>\n</head>\n<body>";
}

function traduce($color)
{
    switch ($color) {
        case "rojo" : return "red";
        case "verde" : return "green";
        case "azul" : return "blue";
        case "cian" : return "cyan";
        case "amarillo" : return "yellow";
    }
}
?>

<h2>Elige los tus colores favoritos</h2>
<form action='<?php echo($_SERVER["PHP_SELF"]) ?>' method='post'>
  <p>Color de fondo:
    <select name='nbgCol'>
      <option>rojo</option>
      <option>verde</option>
      <option>azul</option>
      <option>cian</option>
      <option>amarillo</option>
    </select></p>
  <hr />

  <p>Color del texto:
    <select name='ntextCol'>
      <option>rojo</option>
      <option>verde</option>
      <option>azul</option>
      <option>cian</option>
      <option>amarillo</option>
    </select></p>
  <p><input type='submit' name='enviar' /></p>
</form>
</body>
</html>
Esta página forma parte del curso "Páginas web con PHP" disponible en http://www.mclibre.org
Autor: Bartolomé Sintes Marco
Última modificación de esta página: 25 de mayo de 2011

Creative Commons License
Esta obra está bajo una licencia de Creative Commons Reconocimiento-CompartirIgual 3.0 España.