Bonjour à tous,
Je développe une appli web pour un intranet. Je n'ai pas trouvé la solution à un problème récurrent de cache HTTP du navigateur à l'aide de google, et pourtant, j'ai vraiment cherché... Il s'agit des méfaits potentiels du bouton "page précédente" du navigateur.
Je prends un exemple simple :
L'utilisateur est sur la fiche XXX (simple affichage sans saisie). Il clique sur le bouton "fiche suivante" (de mon appli s'entend, pas du navigateur). Il tombe sur la fiche YYY. S'il revient sur la fiche XXX en cliquant sur le bouton "page précédente" du navigateur, la page s'affiche sans problème. A partir de là, rien ne va plus : s'il clique sur le bouton "Modifier" c'est la fiche YYY qui va être présentée à la saisie. C'est normal car je garde le numéro de la fiche dans $_SESSION. Comme le navigateur a simplement resservi la fiche précédente présente dans son cache, les données de session n'ont pas été mises à jour.
J'ai trouvé sur internet un tas de demandes de programmeurs PHP pour neutraliser le bouton précédent du navigateur. La réponse est générale : ce n'est pas possible et en plus pas souhaitable. Conclusion : le programmeur doit se débrouiller pour prendre en compte le cas de l'utilisateur qui clique sur le bouton "page précédente". Bon !
J'ai essayé d'empêcher la mise en cache du navigateur par l'appel de la fonction PHP header en début de script :
Cela n'a pas l'air de changer grand chose.
Je pourrais aussi mettre mon numéro de fiche non plus en session mais plutôt dans un champ hidden sur la page. Le post la renvoie alors et le programme peut afficher la bonne fiche en modif. Dans le cas simple évoqué ci-dessus, cela peut marcher. Mais j'ai bien souvent beaucoup plus de données à conserver en session, dont des tableaux. Comment faire alors ? Et puis, l'utilisateur peut cliquer autant de fois qu'il le veut sur le bouton "page précédente" et là, je ne contrôle plus rien.
Si quelqu'un a des lumières sur la meilleure manière de contourner le problème, je suis preneur.
Je cherche une vraie solution logicielle et non pas simplement de signaler à l'attention de mes GU (gentils utilisateurs) d'être assez aimables et compréhensifs pour ne jamais cliquer sur le bouton "page précédente" du navigateur, mais seulement sur les boutons de navigation de l'application.
Merci d'avance.
Je développe une appli web pour un intranet. Je n'ai pas trouvé la solution à un problème récurrent de cache HTTP du navigateur à l'aide de google, et pourtant, j'ai vraiment cherché... Il s'agit des méfaits potentiels du bouton "page précédente" du navigateur.
Je prends un exemple simple :
L'utilisateur est sur la fiche XXX (simple affichage sans saisie). Il clique sur le bouton "fiche suivante" (de mon appli s'entend, pas du navigateur). Il tombe sur la fiche YYY. S'il revient sur la fiche XXX en cliquant sur le bouton "page précédente" du navigateur, la page s'affiche sans problème. A partir de là, rien ne va plus : s'il clique sur le bouton "Modifier" c'est la fiche YYY qui va être présentée à la saisie. C'est normal car je garde le numéro de la fiche dans $_SESSION. Comme le navigateur a simplement resservi la fiche précédente présente dans son cache, les données de session n'ont pas été mises à jour.
J'ai trouvé sur internet un tas de demandes de programmeurs PHP pour neutraliser le bouton précédent du navigateur. La réponse est générale : ce n'est pas possible et en plus pas souhaitable. Conclusion : le programmeur doit se débrouiller pour prendre en compte le cas de l'utilisateur qui clique sur le bouton "page précédente". Bon !
J'ai essayé d'empêcher la mise en cache du navigateur par l'appel de la fonction PHP header en début de script :
Bloc de code:
header('Cache-Control: no-cache, must-revalidate');
Cela n'a pas l'air de changer grand chose.
Je pourrais aussi mettre mon numéro de fiche non plus en session mais plutôt dans un champ hidden sur la page. Le post la renvoie alors et le programme peut afficher la bonne fiche en modif. Dans le cas simple évoqué ci-dessus, cela peut marcher. Mais j'ai bien souvent beaucoup plus de données à conserver en session, dont des tableaux. Comment faire alors ? Et puis, l'utilisateur peut cliquer autant de fois qu'il le veut sur le bouton "page précédente" et là, je ne contrôle plus rien.
Si quelqu'un a des lumières sur la meilleure manière de contourner le problème, je suis preneur.
Je cherche une vraie solution logicielle et non pas simplement de signaler à l'attention de mes GU (gentils utilisateurs) d'être assez aimables et compréhensifs pour ne jamais cliquer sur le bouton "page précédente" du navigateur, mais seulement sur les boutons de navigation de l'application.
Merci d'avance.