# Ejercicios - Cookies - Comentarios

Esta página contiene comentarios ampliados con fragmentos de código PHP.

## Cookies 1

### Comentarios ampliados

Volver al principio de la página

## Cookies 2

### Comentarios ampliados

- El programa se compone de una única página. Por tanto, el formulario debe enviar los datos a la propia página. En el atributo action podemos escribir:
  - el nombre de la página

        print "<form action=\"pagina.php">";

  - $_SERVER[PHP_SELF], que contiene la ruta de la página

        print "<form action=\"$_SERVER[PHP_SELF]\">";

  Las dos opciones son correctas. La ventaja de la segunda opción es que seguiría funcionando aunque cambiaramos el nombre del fichero php.

- Como la creación o destrucción de la cookie debe hacer antes de hacer ningún print, la estructura del programa debería ser algo parecido a esto:

      recogida y validacion de datos (sin imprimir nada aunque se detecten errores)
      creación o destrucción de la cookie (en su caso)
      cabecera
      mensajes de error (en su caso)
      comprobación de la cookie o mensaje de creación o destrucción
      formulario
      pie

- La página debe recoger los dos campos enviado por el formulario: la duración ($duracion) y el botón pulsado ($accion).
- La página debe comprobar que los valores recibidos son correctos, es decir:
  - que la duración se encuentra entre los valores 1 y 60
  - que el botón pulsado es uno de los tres posibles.
- Al crear la cookie hay que tener en cuenta que:
  - el nombre que le demos a la cookie no debe coincidir con el atributo name del campo de texto ni de los botones submit.
  - el valor de la cookie conviene que sea el momento en que se borrará la cookie (time()+$duracion)
  - la expiración de la cookie será time()+$duracion

  Por lo que la instrucción será algo de este estilo:

      setcookie('cookieTemporal', time()+$duracion, time()+$duracion);

- Para destruir la cookie es suficiente crearla con una expiración anterior al presente, por ejemplo:

      setcookie ("cookieTemporal", "", time() - 3600);

- En la comprobación de la cookie, basta con hacer la diferencia entre el valor guardado en la cookie y el presente:

      if (isset($_COOKIE['cookieTemporal'])) {
          $tiempoRestante = $_COOKIE['cookieTemporal'] - time();
          print "<p>La cookie se destruirá en $tiempoRestante ";
       ...

- El formulario tiene un único campo de texto y tres botones Enviar. Para que la página pueda distinguir en qué botón ha hecho clic el usuario, los controles deben tener el atributo name. En el ejemplo, el valor del atributo es el mismo en los tres, pero también podría hacerse dando valores distintos a cada botón.

Volver al principio de la página

Esta obra está bajo una licencia de Creative Commons.