Bonjour,

J'ai un petit souci dont je n'arrive pas à me dépêtrer.

Voilà:
Sur mon site, j'ai installé un forum punbb.
Il dispose d'un formulaire d'inscription. Quand il y a un erreur dans ce formulaire, on dispose d'un bouton 'retour' qui fait 'javascript: history.go(-1);'.
Je n'aime pas trop cette technique mais passons.

Jusqu'à présent, ça fonctionnait bien. Je veux dire par là que quand je fait 'retour', les champs de mon formulaire sont bien renseignés avec les valeur que j'ai saisies précédemment.

J'ai décidé d'installer un captcha (solution toute faite) sur le formulaire d'inscription. Or, ce captcha fait un session_start().

Maintenant, je n'ai plus mes champs pré renseignés.

Je vois pas trop le lien entre session php et history javascript...
J'ai fait pas mal de test, c'est uniquement la ligne session_start qui fait que ça ne fonctionne plus.

Ce comportement vous parait-il normal?
Merci d'avance pour vos réponses.
Alors, c'est toujours la même chanson:
J'ai passé l'après midi à essayer de résoudre ce problème.
Je me décide enfin à demander de l'aide sur un forum et, miracle!, 10 minutes après, je trouve la solution.

La solution est là:
http://cct.me.ntut.edu.tw/chchting/aiahtm/computer/phphelp/function.session-start.php.htm

Résumé: il faut ajouter header("Cache-control: private"); après session_start().

Ceci dit, j'ai appliqué sans comprendre. Si quelqu'un a des infos ou une idée sur les conséquence perverses que ça pourrait avoir...
Modifié par Nocnoc (06 Feb 2010 - 18:14)
Salut,

à partir du moment où tu utilises des sessions cela force par défaut le Cache-Control à no-cache, no-store, etc.
Cela empêche donc de retrouver les valeurs précédemment saisies dans un formulaire.
Nocnoc a écrit :
Y'a un risque à forcer 'private'?
Je dirais que non d'autant plus qu'avant ton session_start() les valeurs saisies étaient déjà réaffichées en cas de retour.
Modifié par Heyoan (06 Feb 2010 - 18:52)
Ok. Merci pour ces précisions.
Effectivement, j'étais tombé sur la doc que tu signales.
C'est un peu indgeste pour moi! Smiley eek
(paresseux inside)

Encore merci.