logo simone provenzano

 

Consenti ai tuoi visitatori di modificare le preferenze sui cookie con PJ-Cookie-Kit 2.0

Risorse per il tuo sito web

 

 

 

 

 

[...] Pagina 2

 

Form Cookie opt-in ed opt-out   Cookie opt-in opt-out

 

Ok, siamo a buon punto. Se finora abbiamo fatto tutto correttamente, avremo creato la possibilità di accettare o rifiutare i cookie attraverso il modulo. Se però provi a testarne il funzionamento, ti accorgerai facilmente che qualcosa ancora manca.
Se immagini di essere un visitatore del tuo sito puoi osservare che, dopo il tuo clic su una delle due opzioni, la pagina si aggiorna ma la scelta effettuata non rimane memorizzata. Per essere più precisi va chiarito che la scelta di per sé viene di fatto inviata e memorizzata, ma solo nel browser, creando un apposito cookie tecnico con valore di tipo "cookie accettati" o "cookie non accettati". Tu però non vedi questa scelta nel modulo. In altre parole non vedi alcuna opzione selezionata all'interno del modulo, come se ancora non avessi scelto nulla.
Perché accade ciò? Semplice, perché finora abbiamo chiesto al modulo soltanto di farci fare una scelta, ma non gli abbiamo detto che poi sarebbe bello se ci ricordasse anche quale scelta abbiamo effettuato.

Per far sì che il modulo ci ricordi la scelta effettuata, possiamo ricorrere a due semplici righe di PHP, che sono molto simili a quelle già utilizzate per il blocco preventivo dei cookie nell'articolo "Soluzione per banner di avviso cookie e blocco preventivo".
Come dobbiamo impostare il codice PHP? Prima ti spiegherò come ragionare, poi cosa scrivere.
Innanzi tutto pensiamo al modulo: Come deve apparire la scelta effettuata? Beh, il modo più ovvio è quello di rendere selezionata l'opzione scelta. In altre parole, se ad esempio abbiamo accettato i cookie, vogliamo che il modulo appaia in questo modo:

 

Modulo Consenso Cookie

 

 

 

A livello di codice, per imporre all'opzione di un modulo di apparire selezionata, si utilizza l'attributo "checked", secondo una sintassi generica fatta in questo modo:

 

<input type="radio" checked="checked" />

 

Nel nostro caso specifico, avendo a che fare con due opzioni mutualmente esclusive, dobbiamo fare in modo che, quando un'opzione sia "checked", l'altra non lo sia, e viceversa, in base alla scelta del visitatore.
In particolare, se il visitatore accetta i cookie, dovrà essere prodotto un codice così fatto:

 

<input type="radio" id="consenso" name="scelta" checked="checked" />
<input type="radio" id="rifiuto" name="scelta" />

 

Vediamo cioè che l'input di consenso è "checked", mentre quello di rifiuto non lo è.
Se invece il visitatore non accetta i cookie, dovrà essere prodotto un codice esattamente inverso, cioè:

 

<input type="radio" id="consenso" name="scelta" />
<input type="radio" id="rifiuto" name="scelta" checked="checked" />

 

Dobbiamo quindi fare in modo che, se il visitatore cambia la sua scelta, il "checked" vada nel relativo input e nello stesso tempo scompaia dall'altro.

 

 

 

Per implementare questa soluzione basta fare riferimento al file javascript "jquery.cookiebar". Leggendo il codice di questo file (non lo riporto per non allungare il brodo) si osserva che, se il visitatore accetta i cookie, viene creato un cookie tecnico con nome "cb-enabled" e valore "accepted"; se invece il visitatore non accetta i cookie viene creato un cookie tecnico con lo stesso nome ma con valore "declined".

Con queste informazioni siamo a cavallo, possiamo scrivere due brevissime istruzioni PHP che ragionino in questo modo:

• PHP istruzione 1: Se esiste un cookie che si chiama "cb-enabled", e se questo cookie ha valore "accepted", allora aggiungi il codice checked="checked" all'input di consenso, altrimenti non aggiungere nulla.

• PHP istruzione 2: Se esiste un cookie che si chiama "cb-enabled", e se questo cookie ha valore "declined", allora aggiungi il codice checked="checked" al selettore di rifiuto, altrimenti non aggiungere nulla.

Traducendo il tutto in termini di codice PHP, avremo:

 

PHP istruzione 1

<?php
if (
   (
isset($_COOKIE['cb-enabled']))
   &&
   ($_COOKIE['cb-enabled'] == "accepted")
   )
{echo 'checked="checked"';}
else
{echo '';}
?>

 

PHP istruzione 2

<?php
if (
   (
isset($_COOKIE['cb-enabled']))
   &&
   ($_COOKIE['cb-enabled'] == "declined")
   )
{echo 'checked="checked"';}
else
{echo '';}
?>

 

L'istruzione 1 andrà quindi inserita nel codice dell'input di consenso, e l'istruzione 2 nel codice dell'input di rifiuto, secondo il seguente schema logico:

 

<input type="radio" id="consenso" name="scelta" [PHP istruzione 1] />

 

<input type="radio" id="rifiuto" name="scelta" [PHP istruzione 2] />

 

 

 

PAGINA 1 PAGINA 2 PAGINA 3

 

 

Simone Provenzano

 

 

 

 

 

Privacy e Cookie