Aller au contenu

Google chrome, mod rewrite et les sessions PHP, l'ultime combat!


Aksyon

Sujets conseillés

Salut!

Avant tout, je tiens à m'excuser si ce message n'est pas dans la bonne section, si tel est le cas, n'hésitez pas à le déplacer (et à me crier dessus, mais pas trop ;)

La raison de ce titre farfelu:

Je code actuellement un système perso sur PHP (en local sur une installation LAMP propre) qui fonctionne très bien sous IE et Firefox, mais qui débloque complètement sous Google Chrome (la dernière version bien sur),

j'ai passé pratiquement 5 jours à trouver la provenance de ce "bug" avant de m'apercevoir que celui-ci n'avait lieu que sur Chrome (j'ai mal à la tête).

Le problème:

Lorsque le "mod rewrite" est actif sur mon installation, les variables de session sont toutes doublées (si j'incrémente une variable de 1 à chaque refresh de la page, elle est incrémentée de 2), mais SEULEMENT lorsque j'utilise Google chrome; tout fonctionne parfaitement sur les autres navigateurs.

Reproduire le bug:

PHP (fichier index.php):


<?php

session_start();

$_SESSION['test'] = isset($_SESSION['test']) ? $_SESSION['test']+1 : 1;

echo $_SESSION['test'];

session_write_close();

?>

.HTACCESS (un peu spécial, je redirige toutes les requêtes vers index.php parceque mon "application" le nécessite):


RewriteEngine on
RewriteBase /

RewriteCond %{REQUEST_URI} !^/$
RewriteCond %{REQUEST_URI} !^/index.php
RewriteCond %{REQUEST_URI} !^/public/
RewriteRule .* index.php [L]

NAVIGATEUR:

...hum... Le fabuleux Chrome!

Le test (sur une base de 10 refresh de la page):

Sous Firefox: 1,2,3,4,5,6,7,8,9,10

Sous Chrome: 1,3,5,7,9,11,13,15,17,19

Etrange non?

La solution:

Et bien techniquement parlant, je n'ai toujours pas de solution ...

La question:

Lorsque vous reproduisez ce scenario chez vous et sous chrome, tout fonctionne ou vous avez comme moi l'étrange impression que la variable s'incrémente trop?

Lien vers le commentaire
Partager sur d’autres sites

Je suppose que tu as observé le log des accès http sur ton serveur et que tu n'as pas observé la présence de deux requêtes d'affilée à chaque fois que tu affiches la page? Vu que tu mappes toutes les requêtes sur ton script, même une requête pour (par exemple) un favicon provoquerait une nouvelle incrémentation.

Jacques.

Lien vers le commentaire
Partager sur d’autres sites

Je suppose que tu as observé le log des accès http sur ton serveur et que tu n'as pas observé la présence de deux requêtes d'affilée à chaque fois que tu affiches la page? Vu que tu mappes toutes les requêtes sur ton script, même une requête pour (par exemple) un favicon provoquerait une nouvelle incrémentation.

Jacques.

Bonjour Jacques,

Merci d'avoir pris le temps de lire et de me répondre, je suis à la fois mort de rire, et mort de honte :P, je ne sais vraiment pas comment ceci m'a échappé!

En effet, l'accès à la FavIcon par Google généré un appel supplémentaire; encore merci Jacques et toutes mes excuses à Mr(ou madame) Google qui me rend si souvent service.

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...