Première page : Interdiction cookies ou non ?

Discussion dans 'Demandes d'avis et de conseils sur vos sites' créé par ortolojf, 15 Février 2018.

  1. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    2 805
    J'aime reçus:
    8
    Bonjour

    Pour résoudre le problème de mon cache php ( => pages html ), j'ai mis en Javascript, le "user.bypass = true" de tarteaucitron.

    Voici ce que celà donne :

    Code:
    
    <script type="text/javascript">
    var adr2;
    var url;
    var maintenant;
    var future;
    var str_future;
    var user_agent;
    var xsr;
    var continent;
    var old_continent;
    var patt;
    var is_bypass;
    var etag;
    var ts;
    var end_cookie;
    var str_cookie;
    function getCookie(name)
    {
        if(document.cookie.length == 0)
            return null;
        var regSepCookie = new RegExp('; ', 'g');
        var cookies = document.cookie.split(regSepCookie);
        for(var i = 0; i < cookies.length; i++)
        {
            var regInfo = new RegExp('=', 'g');
            var infos = cookies[i].split(regInfo);
            if(infos[0] == name)
            {
                return unescape(infos[1]);
            }
        }
        return null;
    }
    maintenant = new Date();
    str_future = maintenant.toLocaleDateString();
    var decomposed = str_future.split("/");
    future=new Date(decomposed[2], decomposed[1]-1, +decomposed[0] + 365);
    adr2='https://www.pronostics-courses.fr/tarteaucitron/new/geoip.php' + '?timestamp=' + maintenant.getTime();
    ts=maintenant.toUTCString();
    end_cookie=future.toUTCString();
    etag=Math.random().toString(36).replace(/[^a-z]+/g, '').substr(0, 7);
    patt=new RegExp('(google|bingbot|bingpreview|msnbot|slurp|duckduckgo|baidu|yandex|sogou|exabot|facebook|facebot|archiver|aolbuild|teoma)', 'gi');
    user_agent=navigator.userAgent;
    is_bypass=patt.test(user_agent);
    xsr=null;
    xsr=createXsrObject();
    xsr.onreadystatechange = function()
    {
        if(xsr.readyState == 4)
        {
            if(xsr.status == 200)
            {
                continent = xsr.responseText;
                old_continent=getCookie('continent');
                if (old_continent!=null)
                {
                    continent = old_continent;
                }
                else
                {
                    str_cookie='continent=' + continent + '; expires=' + end_cookie + '; path=/';
                    document.cookie=str_cookie;
                }
            }
        }
    }
    xsr.open("GET", encodeURI(adr2), true);
    xsr.setRequestHeader("X-Requested-Width", "XMLHttpRequest");
    xsr.setRequestHeader("Cache-Control", "no-cache, must-revalidate, proxy-revalidate");
    xsr.setRequestHeader("Pragma", "no-cache");
    xsr.setRequestHeader("If-None-Match", etag);
    xsr.setRequestHeader("If-Modified-Since", ts);
    xsr.send(null);
    old_continent=getCookie('continent');
    if (old_continent!=null)
    {
        continent = old_continent;
    }
    else
    {
        continent='US';
    }
    if((is_bypass)||(continent!='EU'))
    {
        tarteaucitron.user.bypass = true;
    }
    </script>
    
    
    Dans le ci-dessus, geoip.php rend le continent en deux lettres, avec geoip_continent_code_by_name().

    Je suis obligé de mettre continent dans un cookie, sinon il serait undefined ( appel ajax asynchrone ).

    Les autres solutions ( (session|local)storage ) , sont trop gourmandes en mémoire.

    Il y a deux problèmes :

    - Est-ce qu'il faut avoir ou non "user.bypass=true" dans la page de départ ?

    C'est-à-dire : La première page doit-elle interdire les services et cookies ?

    - Le Google Page Insight semble me donner un is_bypass=false, donc un user agent non présent dans l'expression rationnelle "path".

    Ce serait super gentil, si vous pouviez m'indiquer ( à peu près ), la bonne expression pour le user agent du Google Page Insight.

    Merci beaucoup pour votre aide.

    Amicalement.
     
  2. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    2 805
    J'aime reçus:
    8
    Bonjour

    En fait, Google Page Insight soit n'interprète pas le Javascript entièrement ( pas de user.bypass=true ), soit voit une erreur dans mon script.

    Ne mettant pas user.bypass=true, il voit les services bloqués, ce que je ne souhaite pas.

    Le plus curieux, c'est que pour lui, continent='EU', ce qui indiquerait la capacité de se souvenir des cookies ?

    Ceci, dans le cas où son ip serait Européenne.

    Quant à la regexp, elle devrait suffire, mais elle semble rendre false, alors que le token "google" figure dans le user agent de Insight.

    Je ne comprend pas à quoi est du cette erreur.

    Merci beaucoup de votre aide.

    Respectueusement.
     
  3. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    2 805
    J'aime reçus:
    8
    Je vous demande pardon.

    Problème résolu.

    J'ai mis la regexp de cette manière :

    Code:
    
    tmp_regexp=/(google|bingbot|bingpreview|msnbot|slurp|duckduckgo|baidu|yandex|sogou|exabot|face(book|bot)|ia_archiver|aolbuild|teoma)/gim;
    user_agent=window.navigator.userAgent;
    is_bypass=tmp_regexp.test(user_agent);
    
    
    Maintenant la regexp détecte bien l'user agent de Insight.

    Et... "EU" est le continent par défaut au début, mais la valeur correcte est mise en cookie, il n'y a plus besoin d'appel ajax.

    Donc... Lors du premier chargement, le "user.bypass=true", ne figure que pour les bots.

    Le seul et unique problème, réside dans la nécessité de ce cookie "continent", mais est-ce que ce cookie est acceptable, sachant qu'il est nécessaire à la gestion des cookies ?

    Au même titre que tarteaucitron d'ailleurs.

    Je ne sais pas comment éviter ce cookie "continent".

    Merci de votre aide.

    Respectueusement.
     
  4. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    8 777
    J'aime reçus:
    236
    No way, ce type de cookie n'est pas autorisé: http://ec.europa.eu/ipg/basics/legal/cookies/index_en.htm

    Trêve de plaisanterie, si tu mettais toute cette énergie, tout ce temps sur l'amélioration de ton site au design de l'ère d'AOL au lieu de cette cookie notice à la c0n, tu ferais trembler tes concurrents.
     
  5. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    2 805
    J'aime reçus:
    8
    Bonsoir spout

    J'ai effacé le cookie continent, et maintenant le cookie tarteaucitron contient en plus :

    !permission=NO

    ou !permission=YES

    suivant que le visiteur est en Europe ou non.

    Ce n'est pas une indication de lieu même imprécis, et cette indication est nécessaire au bon fonctionnement de tarteaucitron.

    Qui supposerait que ce champ permission indique un lieu ?

    Merci beaucoup de me dire si ce problème est réglé.

    Respectueusement.
     
  6. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    2 805
    J'aime reçus:
    8
    Rebonjour

    L'intérêt de ma solution, c'est que la date d'expiration ne change pas, car le champ "!permission=(NO|YES)" de tarteaucitron n'est jamais mis à jour.

    Celà pourrait d'ailleurs poser problème, si l'ordi client ou le smartphone, fait des gros voyages... ;)

    Plus généralement, comment adapter en synchrone, n'importe quel script type gestion de cookie à la problématique ( européen | non européen ) ?

    Sinon, je peux mettre à jour plus souvent ce champ que annuellement, mais d'après quelle période ?

    Merci beaucoup de votre aide. ;)

    Amicalement.
     
  7. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    2 805
    J'aime reçus:
    8
    Voilà

    Cà marche.

    Une fois/jour, le champ permission de tarteaucitron est refait.

    Donc... L'appel Ajax n'a lieu q'une fois par jour.

    Plus de problème de déplacements des visiteurs.

    Jean François Ortolo, relou
     
  8. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    2 805
    J'aime reçus:
    8
    Bonjour

    Voilà tout est fait.

    Le cookie ne change pas le expires, et l'appel Ajax ( mise à jour du champ permission ), se fait tous les 24h.

    A tester. ;)

    Respectueusement.



    Code:
    
    <script type="text/javascript">
    
    var xsr;
    var permission;
    var old_permission;
    var str_cookie;
    var str_debut;
    var str_fin;
    var drapeau;
    /* Ecrit dans le cookie tarteaucitron. */
    function write_cookie(field, value, expire)
    {
    var d = new Date();
    d.setTime(expire);
    regex = new RegExp('!' + field + "=[^;]+", "g");
    cookie = read_cookie().replace(regex, "");
    tmp_cookie = 'tarteaucitron=' + cookie + '!' + field + '=' + value;
    document.cookie = tmp_cookie + '; expires=' + d.toGMTString() + '; path=/;';
    }
    /* Lit le cookie tarteaucitron. */
    function read_cookie()
    {
    var nameEQ = "tarteaucitron=";
    var ca = document.cookie.split(';');
    var i;
    var c;
    for (i = 0; i < ca.length; i += 1)
    {
    c = ca[i];
    while (c.charAt(0) === ' ')
    {
    c = c.substring(1, c.length);
    }
    if (c.indexOf(nameEQ) === 0)
    {
    return c.substring(nameEQ.length, c.length);
    }
    }
    return '';
    }
    /* Lit un champ de tmp_cookie. */
    function read_field(tmp_cookie, field)
    {
    var fieldEQ = field + '=';
    var ca = tmp_cookie.split('!');
    var i;
    var c;
    for (i = 1; i < ca.length; i += 1)
    {
    c = ca[i];
    while (c.charAt(0) === ' ')
    {
    c = c.substring(1, c.length);
    }
    if (c.indexOf(fieldEQ) === 0)
    {
    return c.substring(fieldEQ.length, c.length);
    }
    }
    return '';
    }
    var maintenant = new Date();
    var adr2='https://www.pronostics-courses.fr/tarteaucitron/new/permission.php' + '?timestamp=' + maintenant.getTime();
    var ts=maintenant.toUTCString();
    var etag=Math.random().toString(36).replace(/[^a-z]+/g, '').substr(0, 7);
    var tmp_regexp=/(google|bingbot|bingpreview|msnbot|slurp|duckduckgo|baidu|yandex|sogou|exabot|face(book|bot)|ia_archiver|aolbuild|teoma)/gim;
    var user_agent=window.navigator.userAgent;
    var is_bypass=tmp_regexp.test(user_agent);
    
    drapeau = false;
    str_cookie=read_cookie();
    
    /** debut = date de construction cookie. **/
    /** expires n'est jamais changé. **/
    str_debut=read_field(str_cookie, 'debut');
    if(str_debut==='')
    {
    /** On refait copplètement le cookie. **/
    /** Mise à jour debut. **/
    /* field value expires +365 days */
    write_cookie('debut', maintenant.getTime(), maintenant.getTime() + 31536000000);
    str_debut = maintenant.getTime();
    drapeau = true;
    
    }
    
    /** fin = date de fin de la période **/
    str_fin=read_field(str_cookie, 'fin');
    if((str_fin==='')||((maintenant.getTime() - str_fin) > 86400000)) /* 1 day */
    {
    /** Mise à jour fin sans changer expires. **/
    /* field value expires +365 days */
    write_cookie('fin', maintenant.getTime(), str_debut + 315360000000);
    drapeau = true;
    }
    
    old_permission=read_field(str_cookie, 'permission');
    if (old_permission != '')
    {
    permission=old_permission;
    }
    else
    {
    permission="NO";
    drapeau = true;
    }
    
    
    if(drapeau)
    {
    xsr=null;
    xsr=createXsrObject();
    xsr.onreadystatechange = function()
    {
    if(xsr.readyState == 4)
    {
    if(xsr.status == 200)
    {
    permission = xsr.responseText;
    /** Mise à jour permission sans changer expires. **/
    /* field value expires +365 days */
    write_cookie('permission', permission, str_debut + 31536000000);
    }
    }
    }
    xsr.open("GET", encodeURI(adr2), true);
    xsr.setRequestHeader("X-Requested-Width", "XMLHttpRequest");
    xsr.setRequestHeader("Cache-Control", "no-cache, must-revalidate, proxy-revalidate");
    xsr.setRequestHeader("Pragma", "no-cache");
    xsr.setRequestHeader("If-None-Match", etag);
    xsr.setRequestHeader("If-Modified-Since", ts);
    xsr.send(null);
    }
    if((is_bypass)||(permission!='NO'))
    {
    tarteaucitron.user.bypass = true;
    }
    
    </script>
    
    
     
  9. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    2 805
    J'aime reçus:
    8
    Bonjour Monsieur spout

    Pour info, le seul cookie mis par ce système de fixation/mémorisation des valeurs (YES|NO) du champ permission, est le cookie tarteaucitron.

    A part çà, les champs suivants sont dans tarteaucitron : debut=[0-9]+ et fin=[0-9]+ , ce sont respectivement, les timestamp du debut de période du cookie, et de fin de période.

    debut est mis à jour quand permission doit être lue ( une fois/jour ), de manière à ce que permission soit valide en cas de déplacement conséquent du client.

    fin est mis à jour quand permission l'est , ou bien que l'un des services change, de manière à ce que le expires du cookie ne soit pas mis par la mise à jour de debut, à une date antérieure, ce qui effacerait le cookie.

    En effet, la mise à jour de debut ( ou bien permission ), se fait en affectant à expires, la valeur de fin + 365 days.

    Celà, pour que le champ expires change le moins possible, ( CNIL dixit ).

    Du moment que le seul cookie en jeu est tarteaucitron, qu'il est nécessaire à la gestion des cookies, et que dans sa version d'origine, il est valide d'après la CNIL, qu'est ce qui empêcherait que ma version soit valide ?

    J'accueille avec joie et reconnaissance toutes les suggestions pour adapter mon site au design de l'ère AOL ;) merci de me dire ce qu'il y a à changer ?

    Je suppose que je couperai pas aux services d'un designer/graphiste ?

    Merci beaucoup de vos réponses.

    Cordialement.
     
  10. elas
    elas WRInaute impliqué
    Inscrit:
    26 Février 2008
    Messages:
    759
    J'aime reçus:
    31
    wasa c'est quoi ce truc de cookies de 1810
    Je n'ai pas cherché à comprendre, pas le temps
    Les browsers effacent les cookies pour la plupart (un peu moins automatiquement dans les téléphones mobiles), à la fin d'une session majoritairement.
    La CNIL personne dans le monde ne connait...
    Et les langages automatiquement créent automatiquement les cookies pour gérer les sessions...
    Tout ca pour dire que les cookies... Pas besoin de chercher midi à 14 heures on s'en ...
    Peut etre que les magazines, a la CNIl ou a la tele on peut lancer des missiles de sous marins nucléaires avec les cookies, même meme pour le phising les cookies on s'en ...
     
    spout apprécie ceci.
Chargement...
Similar Threads - Première Interdiction cookies Forum Date
Un site en première position sur de nombreux mots-clés depuis 1 an et demi Crawl et indexation Google, sitemaps 22 Septembre 2019
WordPress Impossible d'indexer un site pour la première fois Problèmes de référencement spécifiques à vos sites 4 Septembre 2019
De la première à la huitième place en quelques semaines ! Problèmes de référencement spécifiques à vos sites 27 Juin 2018
Page avec canonical différent classé première Débuter en référencement 24 Juin 2018
Première page google garantie Problèmes de référencement spécifiques à vos sites 15 Février 2018
Site qui stagne dans les 10 premières pages Problèmes de référencement spécifiques à vos sites 8 Décembre 2017
Source / support : correspond à la première ou la dernière visite? Google Analytics 7 Novembre 2016
[résolu] Action onchange sur FORM/SELECT qui ne fonctionne qu'à la première action ?!? Développement d'un site Web ou d'une appli mobile 31 Mai 2016
Meta description / categorie / tags que sur la première page ( Wordpress ) Débuter en référencement 24 Mai 2016
Le meilleur outil pour connaître la liste de nos mots clefs classé en première page Débuter en référencement 4 Mars 2016
  1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies.
    Rejeter la notice