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

WRInaute accro
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.
 
WRInaute accro
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.
 
WRInaute accro
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.
 
WRInaute accro
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.
 
WRInaute accro
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.
 
WRInaute occasionnel
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.
 
WRInaute accro
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.
 
WRInaute accro
spout a dit:
et le expireDate c'est redondant avec le $expire.


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.
 
WRInaute accro
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.
 
WRInaute accro
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.
 
WRInaute accro
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:
 
WRInaute occasionnel
spout a dit:
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:

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 ?"
 
WRInaute accro
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.
 
WRInaute accro
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.
 
WRInaute accro
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.
 
WRInaute accro
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.
 
WRInaute accro
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.
 
WRInaute occasionnel
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
 
WRInaute accro
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.



.
 
WRInaute accro
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.
 
WRInaute accro
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.
 
WRInaute accro
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.
 
WRInaute accro
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.
 
Discussions similaires
Haut