Blog de programación, errores, soluciones

Chose Language:
Author: Admin/Publisher |finished | checked

PHP usando Cookies

Las Cookies son un mecanismo para almacenar datos(data) en el navegador remoto para monitorizar o identificar a los usuarios que vuelvan al sito web. Esta es tal cual la definición que se nos da en php.net

Pero que quiere decir esto, cuando decimos navegador remoto, estamos hablando del navegador del usuario que entra a nuestra página.

Cuando dice monitorizar o identificar a los usuarios que vuelvan al sitio hemos de tener en cuenta de no poner el usuario o el password directamente, no sea bestia en esto si quiere ponga el usuario o el ID de usuario con cierta seguridad.

Recuerde que estamos trabajando con datos sensibles de otras personas muchas veces.

supongamos que ponemos el id del usuario 2728_ripolCasc393 encriptado de alguna manera, no ponga datos a lo tonto.

Antes de continuar debo aclarar algo y es que las cookies no tienen que ver con el tiempo de expiración de una session, los tiempos de expiración de la session se establecen con session.gc_maxlifetime en el archivo de configuración php.ini o mediante la función ini_set() en el código PHP

$_COOKIE

ya vimos lo que era $_COOKIE antes en variables predefinidas, pero es bueno traer este tema nuevamente, ya que es un array que tiene nuestras cookies HTTP. Digámoslo de esta manera, aunque puede no ser tan correcto, PHP levanta las cookies del navegador del usuario hacia este array asociativo.

Este es el ejemplo de $_COOKIE que da php.net

ejemplo de $_COOKIE en php.net
<?php
echo '¡Hola ' . htmlspecialchars($_COOKIE["nombre"]) . '!';
?>

tenga en cuenta htmlspecialchars cuando está trabajando con la cookie antes de llamar a echo para mostrarla en pantalla, esto es para evitar una cookie establecida con malas intenciones.

¿En este momento estarás pensando, pero yo soy quien coloco la cookie porque voy a querer convertir los caracteres especiales a HTML entities?

La verdad es que la cookie está almacenada en el navegador del ¿usuario quién dice que un usuario mal intencionado de nuestra página no va a querer sacar ventaja de esto?

Pero en este post estamos hablando de establecer una cookie y de saber si una cookie está establecida.

Para saber si una cookie está establecida podemos utilizar isset, por ejemplo:

chequear que la COOKIE existe
if(isset($_COOKIE['nombre_de_cookie'])){
//code ...
}
//code..

Como establecer una cookie

Para establecer una cookie podemos utilizar 2 funciones, setcookie o setrawcookie estas funciones te permitirán establecer una cookie. ¿Qué diferencia tienen entre ellas?

setrawcookie no hará urlencoding del valor de la cookie, esto quiere decir que por ejemplo los espacios no pasaran a ser %20 y otros simbolos no pasaran a ser %numerohexa, etc.

las Cookies son parte de el encabezado HTTP(HTTP header), de esta manera tal cual en header debemos llamar estas funciones antes de imprimir algo en pantalla o antes de las etiquetas HTML, puede utilizar las Output Control Functions(output buffer) para controlar esto.

setcookie

Description / Descripción
setcookie(
    string $name,
    string $value = "",
    int $expires = 0,
    string $path = "",
    string $domain = "",
    bool $secure = false,
    bool $httponly = false
): bool

setrawcookie

Description / Descripción
setrawcookie(
    string $name,
    string $value = ?,
    int $expires_or_options = 0,
    string $path = ?,
    string $domain = ?,
    bool $secure = false,
    bool $httponly = false
): bool

Como podemos ver, los parámetros de ambas funciones so iguales, ya que las funciones realizan la misma acción.

Parametros

$name -nombre de la cookie

$value – valor que le ingresaremos

$expire– el tiempo en el que la cookie expira, ten en cuenta que este valor es un timestamp, por lo tanto, deberemos utilizar la función time()+(número en segundos que deseamos que se mantenga la cookie)

en consecuencia si queremos x días time()+60*60*24*x

$path– La ruta dentro del servidor en la que la cookie estará disponible, ejemplo: supongamos que nuestro dominio es blastcoding.com y nuestra path es programas, nuestra cookie estará disponible en blastcoding.com/programas/ solamente.

$domain – dominio o subdomino en que la cookie estará disponible, tenga en cuenta que los hijos de estos también tendrán disponibles dicha cookie

$secure – indica si la cookie debe transmitirse por conexión segura, su valor debe ser booleano, su valor por defecto es false. Pero yo les recomendaría que si usas cookies a como viene estando Google exigiendo prácticamente que las páginas sean con SSL lo coloquen en true y se aseguren de que su página soporte SSL.

$httponly – Cuando es true la cookie será accesible sólo a través del protocolo HTTP.

Retorno

el retorno para ambas funcione es booleano. true en caso de que la función pueda correr, false en caso de que exista un output antes de la función.

Category: php
Something wrong? If you found an error or mistake in the content you can contact me on Twitter | @luisg2249_luis.
Last 4 post in same category