2009-09-28 5 views
7

Lorsque je clique sur n'importe quel navigateur, je perds toutes les données qui ont été entrées dans le formulaire à la fois sur les bas et les types de saisie de texte.Perdre des données de formulaire en cliquant sur le bouton Précédent sur le navigateur

Est-ce un serveur, un navigateur ou un problème de codage?

Merci

+0

Dans ASP.NET, les données seront récupérées, donc je suppose que vous n'utilisez pas ASP.NET? – Natrium

+0

Pas d'utilisation de PHP et MySQL –

+0

Cela arrive aussi avec le navigateur Windows Phone. Essayer de trouver une solution. –

Répondre

9

C'est un problème de navigateur. Le navigateur se comporte différemment lorsque vous cliquez sur le bouton Précédent - ce comportement dépend principalement des paramètres de confidentialité de l'utilisateur. En outre, la plupart des navigateurs réinitialisent automatiquement le formulaire en appuyant sur le bouton de retour pour les pages visualisées via une connexion HTTPS, quel que soit leur comportement normal pour les connexions HTTP. En outre, de nombreux formulaires HTML qui dépendent fortement d'AJAX ne restaurent pas correctement ou systématiquement leur état précédent.

---- Modifier

Maintenant que vous mentionnez en utilisant PHP et MySQL, en supposant que vous utilisez également des sessions ... le navigateur ne sera pas pré-remplir le formulaire lorsque vous appuyez sur le bouton de retour. Les pages alimentées par une session PHP ne sont pas mises en cache dans les navigateurs et appuyer sur le bouton précédent pour revenir à la page précédente revient à ouvrir cette page depuis le début - la plupart des navigateurs ne se soucient pas de restaurer les valeurs du formulaire.

+0

J'ai trouvé que Safari garde les données mais pas IE et FF. –

+0

Nous utilisons des sessions correctes, donc il n'y a vraiment aucun moyen de contourner ce problème jusqu'à ce que le navigateur cesse de permettre à l'utilisateur de revenir en arrière. –

+0

Est-il possible d'utiliser les sessions à notre avantage? –

1

Vous devez créer sticky forms pour le navigateur de conserver les données de formulaire lorsque vous appuyez sur BACK. C'est assez facile à faire, consultez les tutoriels dans la recherche liée.

2

Ceci s'applique à PHP et IE8.

Vous devez non seulement définir la mise en cache sur private, mais vous devez également supprimer les 4 en-têtes de mise en cache et cela uniquement avec PHP 5.3.

En PHP 5.2, vous pouvez uniquement définir les 4 en-têtes à des valeurs vides si vous utilisez la méthode setHeader() de Zend Framework. Pour une raison quelconque n'est pas suffisant sur IE8 pour définir les 4 valeurs d'en-tête à des valeurs vides. Voici le code pour PHP 5.3:

header_remove("Expires"); 
header_remove("Cache-Control"); 
header_remove("Pragma"); 
header_remove("Last-Modified"); 
Questions connexes