Comment activer le module pecl_http sous Debian 8 ?

WRInaute accro
Bonjour

J'ai adapté le script tarteaucitron en PHP.

Mais à chaque fois que ce cookie est réécrit, sa date d'expiration est prorogée de un an. ;(

Il faudrait que je garde la date d'expiraton précédente, et pour celà la lire d'une manière ou d' une autre.

Théoriquement, en PHP pour avoir cette date il suffirait que je puisse lire les headers http.

J'ai regardé dans le Zend framework, en dernier recours il fait appel à la fonction apache_get_request_headers().

Je sais, que dans la version 2 du module pecl_http , les fonctions de header n'existent pas.

Seul existent les interfaces Objet du type : HttpResponse, et autres moyens d'accéder aux headers ( avec les caractéristiques des cookies ).

Mais quand je fais sur mon serveur VPS : "php --rc HttpResponse", il me répond obstinément que cette classe n'existe pas.

Ceci, malgré que j'ai compilé à la main, ( et sans erreur ), ce module pecl_http , en faisant : "perl install pecl_http".

Quand je fais : "systemctl restart php5-fpm", il n'y a pas d'erreur.

Egalement après démarrage de Apache 2.

Comment faire pour avoir ces classes permettant de lire les headers ?

Je n'ai plus que jusqu'au 1er Septembre avant de rendre mon tarteautrcitron compliant avec la directive Européenne. ;(

Respectueusement.
 
WRInaute passionné
Bonjour,

je t'invite à regarder véritablement ce qui circule dans les entêtes HTTP (via l'extension LiveHTTPHeaders de PHP, par exemple), pour te rendre compte que cette information n'y est absolument pas présente.

Par exemple, là tout de suite, l'entête Cookie complet que mon navigateur envoi sur un site :
Code:
Cookie: cb-enabled=enabled; crtg_rta=; _gat=1; _ga=GA1.2.1016790504.1410767077; _gat_newTracker=1

De plus, même si l'information y était présente, l'extension http permet de reproduire une connexion HTTP, aucunement d'extraire des informations de la connexion traitée par PHP.

Mais si tu tiens à essayer malgré tout par toi même, la réponse à ta question est :
Code:
apt install php5-pecl-http
(cf https://packages.debian.org/jessie/php5-pecl-http)
 
WRInaute accro
Bool a dit:
Bonjour,

je t'invite à regarder véritablement ce qui circule dans les entêtes HTTP (via l'extension LiveHTTPHeaders de PHP, par exemple), pour te rendre compte que cette information n'y est absolument pas présente.

Par exemple, là tout de suite, l'entête Cookie complet que mon navigateur envoi sur un site :
Code:
Cookie: cb-enabled=enabled; crtg_rta=; _gat=1; _ga=GA1.2.1016790504.1410767077; _gat_newTracker=1

De plus, même si l'information y était présente, l'extension http permet de reproduire une connexion HTTP, aucunement d'extraire des informations de la connexion traitée par PHP.

Mais si tu tiens à essayer malgré tout par toi même, la réponse à ta question est :
Code:
apt install php5-pecl-http
(cf https://packages.debian.org/jessie/php5-pecl-http)


Bonjour Bool

Ok, j'ai regardé le sen-têtes http avec la méthode : http\Env::getRequestHeader() , et effectivement il n'y a pas le détail des cookies.

Celà veut-il dire qu'il faut nécessairement passer par javascript pour obtenir le détail des cookies ?

En ce qui concerne la méthode: 'apt-get install php5-pecl-http' , c'est ce que j'ai fait au début, mais la classe HttpResponse n'était pas présente, alors j'ai fait une compilation manuelle de pecl_http avec 'pecl install pecl/http'.

Et là, pas plus de classe que sous le sabot d'un cheval. ;)

C'est plutôt HttpRequest qu'il faut, mais si le détail des cookies n'est pas dans les en-têtes http... ;(

Respectueusement.
 
WRInaute passionné
Hello,

habituellement pour ce type de chose, il suffit d'inclure la date dans le cookie. Par exemple, quand si tu veux stocker la valeur "a", tu stockes en fait "a:20150809", comme ça tu sais que tu as posé le cookie le 09/08/2015, et tu ajustes en fonction de ça.
 
WRInaute accro
Bool a dit:
Hello,

habituellement pour ce type de chose, il suffit d'inclure la date dans le cookie. Par exemple, quand si tu veux stocker la valeur "a", tu stockes en fait "a:20150809", comme ça tu sais que tu as posé le cookie le 09/08/2015, et tu ajustes en fonction de ça.


Bonjour Bool ;)

J'ai mis au point mon implémentation PHP de tarteaucitron de cette manière :

Le cookie tarteaucitron, contient maintenant : "tarteaucitron =!service1=(0|1|true|false)!service2=(0|1|true|false) .. etc... ,expireDate=[0-9]+;expires=toUTCString([0-9]);path=/"

Les deux [0-9] sont le time Javascript ( en millisecondes ), de la date d'expiration du cookie.

Quand je veux simplement updater le cookie ( sans changer sa date d'expiration ), je lis sa valeur ( value ), et expireDate ( valeur_lue ), puis je reconstruis la valeur entière du cookie, pour l'écraser en faisant : document.cookie = 'tarteaucitron=' + value + ',expireDate=' + valeur_lue + ';expires=' + valeur_lue + ';path=/';

J'ai un problème.

Quand j'update le cookie ( de la même manière dans les deux cas mais avec une fonction différente ), par service ou entièrement, j'obtiens deux résultats différents :

- Par service : Le cookie a bien une date d'expiration notée par le navigateur ( Chrome ou Firefox ),

- Entièrement : Le cookie est considéré par le navigateur comme un cookie de session.

Dans ce cas, il disparaît sous Firefox mais pas sous Chrome, quand j'arrête le navigateur.

Le problème, semble être lié au fait que dans le premier cas ( je met à jour systématiquement le cookie au début de mon script ), le cookie n' a pas besoin d' être mis à jour, puisqu'il ne change pas.

Mais ce n'est pas sûr.

Il est sûr dans tous les cas, que le cookie a bien la bonne date d'expiration , en le visualisant avec 'window.alert(document.cookie);' j'obtiens la bonne valeur du cookie et de expireDate.

expireDate ne change pas, même qiuand le cookie est modifié.

Ceci se produit, quand le visiteur change ses préférences par rapport à un ou plusieurs services.


Mais c'est vrai que je ne peux pas ( même de cette façon , avec "window.alert (document.cookie);" ), visualiser le champ ';expires=[0-9]'.

Simplement, il n'y a aucune différence de code Javascript dans les deux cas de modification.

Je ne sais pas quoi faire.

J'ai mis de nouveau la dernière version de mon script sur mon site.

Merci beaucoup de ton aide. ;)

Respectueusement.
 
WRInaute accro
Rebonjour Bool

Voilà le problème est corrigé. ;)

Je pense qu'on peut considérer la version actuelle comme une "release". ;)

Simplement, quand le cookie n'a pas changé, je ne le réécrit pas.

Cà a l'air de marcher avec Chrome, dans tous les cas le cookie est considéré comme un vrai cookie ( pas de session), et la date d'expiration est indiquée et ne change pas.

Je file vérifier avec Firefox.

Merci.

Respectueusement.
 
Discussions similaires
Haut