2011-12-17 3 views
0

Dans mon application, j'ai quelques formulaires qui peuvent être accessibles à partir de différentes URL dans l'application. Chaque formulaire a un bouton d'annulation, qui devrait retourner l'utilisateur de l'URL d'où ils venaient précédemment. Donc, ceci est assez facile à réaliser avec $ _SERVER ['HTTP_REFERER'].PHP référent persistant

Le problème survient lorsque l'utilisateur soumet le formulaire et qu'il échoue à la validation. Donc, à ce stade, le $ _SERVER ['HTTP_REFERER'] est le formulaire lui-même. Évidemment, le bouton d'annulation ne fonctionnera pas correctement, puisque le referer original a maintenant été 'perdu'.

Quel est le meilleur moyen de contourner le problème? Dois-je stocker le referer d'origine dans la session, ou peut-être via un champ de formulaire caché? Ou peut-être y a-t-il une autre méthode plus élégante?

+0

Comment fonctionne le bouton d'annulation pour le moment? Javascript, formulaire de soumission etc> – DaveRandom

+0

Juste un simple lien hypertexte dans la plupart des cas – JonoB

Répondre

1

Vous ne devriez pas utiliser le référant pour cela, utilisez une méthode différente. Peut-être définir vous-même une variable de session avec la dernière page visitée ou utiliser un champ caché pour sauvegarder l'URL de la page précédente.

1

La meilleure méthode qui garantira toujours à l'utilisateur de revenir au même endroit malgré plusieurs onglets/fenêtres serait de passer l'URL de retour en tant que paramètre GET.

0

Vous pouvez l'enregistrer comme un cookie assez facilement http://php.net/manual/en/function.setcookie.php

utilisant url encode et passer dans la chaîne de requête ou les données post est dans l'autre sens, mais vous devez garder une trace de celui-ci.