1. ⭐⭐⭐ Grosse PROMO en cours sur ma plateforme SEO My Ranking Metrics
    Rejeter la notice

Quel script de consentement <=> tarteaucitron en pur php ?

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par ortolojf, 19 Août 2016.

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

    Je suis en train d'éliminer tous mes scripts javascript.

    J'ai partiellement adapté le script tarteaucitron en mode pur PHP, mais je recule devant le boulot ( quasiment impossible ), de convertir l'interface aussi sans Javascript.

    Est-ce qu'il n'existerait pas un script pur PHP ( sans Javacript ) gérant le consentement des utilisateurs au différents services : Twitter , Facebook, Google+, UA etc... ?

    Celà me soulagerait beaucoup de cet effort voué à l'échec, puisque en mode AMP ( sur lequel je compte porter mon site prochainement ), les fenêtres popup sont interdites.

    Merci beaucoup de vos réponses.

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

    Bon y a pas foule. ;)

    J'ai pas trouvé de script pur PHP.

    J'ai mis le Javascript et les appels de fonctions ( Javascript ) dans un fichier php , je vais tâcher de convertir cette logique d'interface en PHP.

    Il s'agit uniquement de l'interface graphique, la logique technique est déjà en PHP.

    Sacré boulot.

    Et... En AMP, il est interdit de faire des popups...

    Amicalement.
     
  3. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    2 799
    J'aime reçus:
    8
    Voili voilou

    J'ai converti pratiquement entièrement les fonctions en PHP, je compte transmettre les paramètres dans une table MySQL, et puis faire des remplacements de pages ( = chargements ) au lieu de popups.

    L'affichage n'aura plus besoin de changer les styles ( display:none, etc.. ), seulement les couleurs, et les display:none seront remplacés par le non-affichage des données html.

    Il n'y aura plus du tout de Javascript.

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

    Voilà, j'ai quasiment terminé le boulot.

    Mais je n'arrive pas en PHP à créer un cookie 'tarteaucitron' , que ce soit avec setcookie() ou setrawcookie().

    Les fonctions sont appelées, mais le cookie n'est pas créé.

    Voici la syntaxe de la valeur du cookie :

    $value = '!analytics=1!facebook=0!gplus=0!twitter=0,0,30367217,expireDate=1503403217749';

    $expire = 1471867217;

    que je déclenche ces fonctions :

    setcookie('tarteaucitron', $value, $expire, "/");

    ou

    setrawcookie('tarteaucitron', urlencode($value), $expire, "/");


    Après rechargement de la page, le cookie : $_COOKIE['tarteaucitron'] n'existe pas.

    Que faire ?

    Merci beaucoup.

    P.S. Je garantis à l'auteur du script tarteaucitron original, que je ne donnerai ce programme qu'à lui-même et à personne d'autre.
     
  5. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    8 759
    J'aime reçus:
    234
    Ton site est en HTTPS donc tu dois mettre aussi secure à true dans le setcookie

    NB: drôle de $value pour ton cookie, alors que tu pourrais y mettre du JSON.
    Code:
    {"analytics":true,"facebook":false,"twitter":false}
    et le expireDate c'est redondant avec le $expire.
     
  6. elji
    elji WRInaute occasionnel
    Inscrit:
    6 Juin 2009
    Messages:
    279
    J'aime reçus:
    5
    Bravo !

    Je suis moi aussi convaincu par l'idée de supprimer le javascript. Il n'y en a plus un seul dans mon contenu rédactionnel. Il n'en reste plus que dans des modules externes, pour twitter mes articles, me suivre sur youtube et ce genre de choses.
     
  7. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    2 799
    J'aime reçus:
    8
    Bonjour spout

    Cà passe avec setcookie et Chrome ou Firefox, en utilisant cette syntaxe( valeur fixe ) et en laissant le décalage horaire CEST habituel.

    Peut-être parce que j'avais mis en mode UTC ?

    Très respectueusement.
     
  8. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    2 799
    J'aime reçus:
    8

    C'est pour garder le expire du cookie constant.

    Je ne peux pas lire le expire du cookie existant, autrement que d'après le cookie.

    Amicalement.
     
  9. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    2 799
    J'aime reçus:
    8
    Rebonjour spout

    Rien à faire çà passe pas.

    $tmp_cookie de cookie_create() = !facebook=1!analytics=1!gplus=0!twitter=0,0,30394363,expireDate=1503430363

    Je plussoie en mettant le setcookie() plus un $_COOKIE['tarteaucitron'] = $value;

    Le timezone est à 'Europe/Paris'.

    Les champs expires, variables ou constants, sont dérivé de la fonction PHP time().

    En fixe le setcookie() fonctionne, en réel il ne fonctionne pas.

    Et... Les variables $_COOKIE[ ] sont effectivement reconnues.

    Mais ces cookies ne sont pas propagés par le navigateur.

    J'ai un localhost en http , je met quand même le secure.

    Comment savoir d'où vient l'erreur ?

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

    Voici l'algorithme que j'utilise :

    Je met le html dans une variable $html_local ( variable globale ).

    Le traitement ( automatique ) est fait sur $html_local en fonction du cookie et de diverses variables en session.

    Je remet le même html qu'au début cette fois-ci dans $html , qui comporte des liens avec un paramètre entier suivant la fonction qui aurait été déclenchée par Javascript au clic.

    Avant chaque lien, j'enregistre le nom et les paramètres de la fonction dans une table MySQL.

    Donc, avant tout celà, je lance la fonction correspondant au paramètre de l'url, avec son paramètre enregistré.

    Enfin, si le paramètre entier ( de l'url ) le nécessite, je lance une ou deux fonctions.

    J'affiche $html_local à la fin du script.

    Pour que les liens figurent aussi dans $html_local , je lit le paramètre avec la même fonction qu'à l'enregistrement, mais sans enregistrer dans la table MySQL.

    Celà pour chaque liens hypertexte, pour que le paramètre entier du lien soit identique celui de $html après.

    La fonction déclenchée au début ( enregistrée ) avant le $html , ainsi que d'autres fonctions du traitement automatique, permettent de modifier la variable $html_local, c'est-à-dire les styles inline ( background-color ou display ), des id concernés par les fonctions.

    La syntaxe de $local_html est assez stricte : les id sont entre quotes et les styles inline entre doubles quotes.

    La fonction directe qui fait celà est : userInterface_css($key, $property, $value).

    $key est l'identficateur, et $property l'attribut du style.

    Que pensez-vous de cet algorithme ?

    L'interface suit péniblement, quelques erreurs css et le cookie n'est jamais déposé, bien que les setcookie() soient déclenchés.

    Je suis sous localhost.

    Respectueusement.
     
  11. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    8 759
    J'aime reçus:
    234
    Tout ça pour cette bête cookie notice à la c0n qui ennuie tout le monde.
    Perso je n'en met pas sur mes sites, si un jour j'ai un problème, "c'était un bug dans votre browser, c'est maintenant réparé" :lol:

    Scénario de navigation sur les sites en 2016:
    1) example.com souhaite avoir accès à votre position
    2) example.com souhaite afficher les notifications
    3) example.com utilise des cookies blablabla
    4) modale likez notre page FB
    5) merci de désactiver votre bloqueur de publicité

    :evil:
     
  12. aproximité
    aproximité WRInaute occasionnel
    Inscrit:
    19 Janvier 2010
    Messages:
    481
    J'aime reçus:
    0
    La force se réveille, bravo spout :wink:
    Perso je n'en pas mis non plus sur mes sites, et si un jour j'ai un problème : "ha bon, il y a des cookies sur mon site, je ne savais pas, qu'est ce que c'est des cookies ?"
     
  13. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    2 799
    J'aime reçus:
    8
    Rebond

    Pour que l'interface suive ( avec les couleurs des liens ), je dois également modifier les styles inline ( seulement le background-color ) des liens ( <a href="$url?star=$param"> ).

    Je vais modifier la fonction userInterface_css() ce matin.

    $param est de la forme : 1000 * $num_fonction + 10 * $num + $tmp_star.

    $num_fonction et $num définissent la fonction à lancer parmi celles enregistrées lors du dernier chargement de page, et $tmp_star ( si différent de 0 ) est le vote fait par le visiteur dans page précédente.

    J'ai une fonction : change_url_star($param) qui me rend le paramètre du href, et TraitementFonction($nom_fonction, $id, true|false) qui me rend $param.

    Le paramètre du href peut être sous forme ulrewritée, c'est change_url_star() qui s'en charge.

    TraitementFonction() enregistre ou non $nom_fonction et $id dans la table MySQL si le dernier paramètre est à true, si false elle se contente de rendre $param.

    Donc : false dans la première passe ( $html_local ), et true dans la deuxième passe ( $html ).

    Elémentaire mon cher Watson. ;)

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

    Le code html a des styles inline correctement modifiés de manière dynamique ( traitement habituel ), et par la fonction correspondant au clic dans la page précédente.

    Cà marche pour l'interface et les réactions aux clics, mais pas de session et pas de cookie... ;(

    Incroyable, le cookie de session s'affiche et les cookies de UA aussi ( quand UA est activé par défaut ).

    Incompréhensible.

    Je suis sous localhost.

    Que faire ?

    Merci beaucoup de votre aide.

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

    Après vérification :

    Le cookie $_COOKIE['tarteaucitron'] est bien créé avec une valeur d'expiration dans le futur ( time() + 365 environ ), mais il n'est pas transmis à la page suivante.

    Du moins il est visible à la fin de la page dans $_COOKIE['tarteaucitron'].

    Les sessions sont correctes en fait, transmises correctement.

    Je suis sous localhost et Nginx avec le module Pagespeed inactif.

    Nginx a été compilé par mes soins et le cookie de session est transmis.

    Les seuls autres cookies sont ceux de UA, qui sont créés et transmis.

    Problème serveur ?

    Merci de votre aide.

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

    Mauvais paramètres de setcookie(). ;(

    Maintenant plus qu'un petit problème avec cookie_create(). ;)

    Le parsing du cookie est mauvais.

    Je suis sur la bonne piste. ;)

    En principe le débogage est presque terminé.

    Respectueusement.
     
  17. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    2 799
    J'aime reçus:
    8
    Voilà çà marche.

    J'ai tarteaucitron sans Javascript sur mon site.

    Le seul embêtement, est que pour modifier la permission d'un service, il faut recharger la page une fois après.

    C'est sur mon site, merci d'essayer. ;)

    Je laisse évidemment à Amaury la propriété de ce soft.

    Amicalement.
     
  18. aproximité
    aproximité WRInaute occasionnel
    Inscrit:
    19 Janvier 2010
    Messages:
    481
    J'aime reçus:
    0
    Bonsoir Jean François,
    Si cela peut vous aider à avancer :
    La fonction "interdire" est apparemment réactive pour Facebook, Google+, et Twitter,
    mais pas pour Analytics (Google) qui reste en vert "autoriser".
    Cordialement
     
  19. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    2 799
    J'aime reçus:
    8
    Bonjour aproximite

    Je croyais que la CNIL admettait les cookies posés par un système de mesure de fréquentation.

    Si ce n'est pas le cas merci de me le dire ?

    J'ai simplement mis $isAutostart["analytics"] = true; dans services.php , je le mettrai à false si UA doit pouvoir être refusé par les visiteurs.

    Merci beaucoup pour ton essai et réponse.

    Respectueusement.



    .
     
  20. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    2 799
    J'aime reçus:
    8
    Rebonjour aproximite

    J'ai mis le service par défaut de "analytics" à false.

    Maintenant mon script devrait être à peu près compliant avec la directive Européenne ?

    Mais... Est-ce que les visiteurs non Européens, doivent avoir le même processus de filtrage des cookies que les Européens ?

    Y a-t-il une liste des codes des pays Européens ?

    Genre : "FR" pour la France, etc...

    J'ai la librairie GeoIp sur mon serveur VPS, c'est facile de faire une fonction.

    Merci beaucoup.

    Respectueusement.
     
  21. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    2 799
    J'aime reçus:
    8
    Super

    J'avais le défaut, de devoir recharger une page avant de prendre en compte les modifications.

    Maintenant la modification est immédiate.

    Le seul et unique inconvénient de mon soft, est que chaque modification recharge la page.

    Merci de tester.

    J'ai du gérer le mode prerender de Chrome, ce qui nécessite une variable de session faisant timing ( à la microseconde près ).

    Vos remarques me permettront d'ajuster la limite du timing.

    Cette limite, devrait se situer entre le délai maximum ( passe2 - passe1 ) du prerender, et le délai minimum de temps entre deux pages.

    Pour l'instant j'ai mis comme limite 10.4 en unités de microtime( true ) de php.

    Merci de vos appréciations.

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

    J'ai un problème de mise au point.

    Il se peut que mon adaptation ( sans aucun Javascript ), de tartecitron, ne fonctionne pas correctement pour des débits réseau faibles ( c'est-à-dire ADSL ou modem RTC ).

    Pour tester, il faudrait ( sous Chrome ), effacer le cache et les cookies.

    Et puis, lancer seulement l'url suivante : https://www.pronostics-courses.fr

    Ensuite, regarder le code source html, en haut duquel il doit y avoir une ligne : '$delta = "valeur numérique de type float"'.

    Simplement, j'aurai besoin d'avoir les valeurs de $delta ( à peu près ), pour les types de connexions suivantes :

    - Fibre optique,
    - Câble,
    - ADSL,
    - Modem RTC.

    Cette valeur $delta, correspond au délai ( mesure microtime(true) ) qu'il y a entre la 1ère passe et la 2ème passe du prerender de Chrome.

    Je suppose que cette valeur varie suivant le débit de la connexion.

    Je n'ai besoin que d 'une seule mesure par type de connexion.

    Et, toujours après avoir effacé le cache et les cookies.

    Actuellement, seul Chrome fait du prerender.

    Merci beaucoup beaucoup de vos réponses.

    Respectueusement.
     
  23. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    8 759
    J'aime reçus:
    234
  24. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    2 799
    J'aime reçus:
    8
    Super merci Spout

    J'ai pu faire des tests et des jeux d'essai.

    Maintenant çà devrait aller.

    Un seul bug : Pour les débits hauts, le bandeau du bas reste une fois avant de développer l'interface.

    Mai celà n'a lieu que lors d'une première visite.

    Je pense que maintenant le script fonctionne sous tous les débits.

    Merci de vos retours.

    Maintenant je vais me pencher sur la doc AMP.

    Amicalement.
     
Chargement...
Similar Threads - script consentement <=> Forum Date
Référencement d'un site full javascript (angular js) Référencement Google 10 Septembre 2019
Meta description Yoast Seo non reprise par Google Référencement Google 8 Septembre 2019
Balisage sémantique itemprop name / description multilingue Référencement Google 26 Juillet 2019
[Google shopping] Erreur "description" dans diagnostic du module "google merchant center pro" e-commerce 26 Juillet 2019
Problème de description dans les serps Problèmes de référencement spécifiques à vos sites 19 Juillet 2019
WordPress Affichage de l'auteur au lieu de la meta description Référencement Google 19 Juillet 2019
État de votre demande d'inscriptionNous vous remercions AdSense 24 Juin 2019
Compatibilité Javascript pour IE. Demandes d'avis et de conseils sur vos sites 21 Avril 2019
Comment stopper l'exécution de script ajax Développement d'un site Web ou d'une appli mobile 21 Avril 2019
Search Console Titres et descriptions en double dans la nouvelle search console Google : l'entreprise, les sites web, les services 10 Avril 2019
  1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies.
    Rejeter la notice