Question

Mon problème est que le bouton de retour provoque le navigateur pour dire quelque chose comme « la page a expiré » lorsque la page précédente a été créé par un formulaire.

Exemple:

  • page1: formulaire soumis à la recherche critères ($ _POST demande, sous forme les points à page2)
  • page2: reçoit $ _POST demande Afficher le résultat (liste des utilisateurs avec des liens, les points à page3)
  • page3: Voir le profil de l'utilisateur

Maintenant, quand le visiteur clique sur le bouton de retour dans le navigateur, il affichera quelque chose comme « la page a expiré ».

Au lieu de la page précédente doit être affiché sans avertissement (page2, avec la liste des utilisateurs)

Comment sont vos stratégies pour contourner ce comportement?

Était-ce utile?

La solution

Si vous soumettez une pour des paramètres de recherche, vous essayez de get certaines données, modifient pas certains.

Alors, vous devez utiliser la méthode HTTP GET, POST et non: POST doit être utilisé lorsque vous avez l'intention de créer / modifier des données, et GET doit être utilisé lorsque vous avez l'intention d'aller chercher des données

.


Ou, si vous en avez créer / modifier le fonctionnement qui doit être fait:

  • La forme première à une première POSTs la page
    • cette page fait quelques opérations (comme écrire quelque chose à une base de données)
    • Et puis redirige vers une autre page, en utilisant un en-tête HTTP Location.
  • Il est cette dernière page de c'est des requêtes par le navigateur en utilisant une des requêtes GET, qui affiche les données extraites à partir des paramètres reçus dans l'URL.

Voir la Post / Redirect / Get sur wikipedia, à ce sujet.

Autres conseils

Envoyer un en-tête de Location dans le script que vous POSTé à, pointant vers la page qui vient après.

Ne pas utiliser POST pour la recherche. La recherche peut en toute sécurité être fait avec GET, car il ne rien changer.

Cela vaut pour PHP et IE8.

Non seulement vous devez mettre à privé en tant que cache, mais vous devez retirer les 4 têtes de et cela ne en tant que cache peut être fait avec PHP 5.3. En PHP 5.2, vous ne pouvez définir les 4 têtes de valeurs vides si vous utilisez la méthode setHeader () du Zend Framework. Pour une raison quelconque ne suffit pas 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");

Vous pouvez utiliser la session pour le faire.

par exemple.

$ _ SESSION [ 'nom'] = $ _POST [ 'nom'];

Remeber à UNSET vos variables après le processus est terminé pour optimiser l'utilisation de la mémoire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top