PHP Cookies

De MediaWiki
Saltar a: navegación, buscar

Introdución

  • A cookie é información que se garda nos equipos dos usuarios.
É importanto ter claro que dita información gárdase no equipo cliente.
  • O uso das cookies pode ser utilizada para gardar información sobre que 'páxinas' ou 'produtos' foron vistos por un usuario para, cando se volve ao mesmo sitio, que este poida ofrecer información 'personalizada'.
Os seus detractores indican que pode ser un mecanismo para obter información sobre un usuario sen que o usuario estea de acordo con que se garde ese tipo de información.


  • A diferenza das variables de sesión, podemos configurar as cookies para que se manteñan no equipo do cliente durante o tempo que indiquemos.
Por iso resultan indicadas para gardar información como o nome do usuario, as súas preferencias de idioma,...
Desta forma o usuario non ten que volver a introducir ditos datos e se se ten acceso a esta información por parte de terceiros non supón ningún tipo de risco.

Onde se gardan

  • Como dixemos anteriormente, gárdanse no equipo cliente.
Onde ?
Vai depender do navegador, da versión do navegador e do S.O.
  • Vexamos algúns exemplos (deberemos ter activada la opción de visualizar arquivos ocultos do explorador de arquivos => Menú Ferramenta => Opcións de Carpeta => Lapela Ver)

FIREFOX

  • En Windows 7 e Vista: "\Usuarios\<Teu_usuario>\AppData\Roaming\Mozilla\Firefox\Profiles\números_e_letras.default".
  • En Windows XP e 2000: "\Documents and Settings\<Teu_usuario>\Datos de programa\Mozilla\Firefox\Profiles\números_e_letras.default".
  • En Unix/Linux no cartafol: "~/.mozilla/".
  • En Mac OS X: "~/Library/Mozilla/".
A partires da versión 3 de Firefox atópanse nun archivo de base de datos "cookies.sqlite", nas versións anteriores no arquivo "cookies.txt".


CHROME

  • En Windows vista ou 7: "\Usuarios\<Teu_usuario>\AppData\Local\Google\Chrome\User Data\Default\".
  • En Windows XP e 2000: "\Documents and Settings\<Teu_usuario>\Configuración local\Datos de programa\Google\Chrome\User Data\Default\"
  • En Mac OS X: "~/Library/Preferences/Opera Preferences/cookies4.dat".
  • En Linux: “~/.config/google-chrome/Default”.
O nome do arquivo é "cookies" sen extensión e en formato base de datos.

INTERNET EXPLORER

  • En Windows 7 e Vista: "\Usuarios\<Teu_usuario>\AppData\Roaming\Microsoft\Windows\Cookies".
  • En Windows XP e 2000: "\Documents and Settings\<Tu_usuario>\Cookies".
Internet Explorer almacena as cookies individualmente en formato texto nuns arquivos codificados coa extensión ".txt"



  • Nalgúns navegadores tamén podemos visualizar as cookies a través do propio programa, por exemplo, nas opcións do firefox:

Php cookies 1.jpg


Como se borran por parte do usuario

  • En Firefox: menú "herramientas" / "limpiar historial" / "reciente".
  • En Chrome: icono de herramientas / "settings" / "under the hood" / "Clear browsing data" / marcar "the beginning of time" / "Delete cookies and other site and plug-in data".
  • En Internet Explorer: "herramientas" (icono en IE9) / "opciones de internet" / "historial de exploración" / "eliminar".

Uso de cookies

Creando novas cookies

Leva a seguinte información:
  • Nome da cookie (o único obrigatorio)
  • Valor da cookie.
  • Tempo de caducidade da cookie en segundos.
Este parámetro é opcional. Se non se pon, a cookie será válida ata que se peche o navegador.
O valor se pode calcular desta forma: time()+60*60*24*365 => Válido para un ano enteiro.
Se non se lle asocia, a cookie é válida mentres o usuario non peche o navegador.
Aquelas que levan unha data de caducidade permanecen gardadas no equipo ata chegar dita data, no momento en que deixan de ser válidas.
  • Ruta que indica que páxinas do servidor van poder facer uso da cookie. Se poñemos '/' indicaremos que todas as páxinas do sitio van poder acceder á cookie. Se poñemos /tenda/ indicaremos que soamente as páxinas que se atopen dentro do cartafol /tenda/ do meu sitio web poderán acceder á cookie (inclúe sub-cartafoles).
  • Dominio: nome do dominio que terá acceso á cookie. Por exemplo: tenda.meudominio.es
  • Secure: valores true/false, indica se queremos que a cookie só se transmita se o cliente dispón dunha conexión segura https.


  • Valor devolto:
  • False: se existe algunha saída (ouput) previa no cliente. Tense que definir antes de enviar ningunha información ao cliente. Isto é debido a que se vai enviar en forma de cabeceira.
  • True: Se executou correctamente, pero isto non indica que o cliente gardara a cookie no seu computador.


  • Vexamos un exemplo:
setCookie("Idioma","galego");
  • Outro exemplo cunha cookie que será válida durante 5 minutos:
setCookie("Hora_conectado",time(),time()+60*5);
Neste exemplo gardamos en segundos, o momento no que o usuario cargou a páxina.
Fixarse que se imos a outra páxina diferente, podemos calcular o tempo que pasou dende a carga dunha páxina anterior:
$tempo_transcurrido=time()-$_COOKIE['Hora_conectado'];

Accedendo ás cookies

  • Debemos facer uso do array global $_COOKIE
  • Así se queremos facer uso dunha cookie:
$valor = $_COOKIE['Idioma'];


Borrando cookies

  • Para borrar unha cookie temos que facer uso da mesma función (setCookie) pero indicando unha data de caducidade anterior á actual.
  • Por exemplo:
setCookie("Idioma",null,time()-3600);
Outra forma de facelo e non depender de que o tempo do servidor sexa o correcto:
setCookie("Idioma",null,1);


  • Lembrar que isto borra a cookie no cliente, pero non así no servidor na páxina onde estades a borrar a cookie.
Para borrala do servidor na páxina actual:
unset($_COOKIE("Idioma"));




-- Ángel D. Fernández González -- (2017).