web-dev-qa-db-fra.com

Retour à la page précédente avec en-tête ("Location:"); dans PHP

Le titre de cette question explique en quelque sorte ma question. Comment rediriger le visiteur de la page PHP vers sa page précédente avec le header( "Location: URL of previous page" );

111
Web_Designer

essayer:

header('Location: ' . $_SERVER['HTTP_REFERER']);

Notez que cela peut ne pas fonctionner avec des pages sécurisées (HTTPS) et que c'est une très mauvaise idée car l'en-tête peut être détourné, ce qui envoie l'utilisateur vers une autre destination. L'en-tête peut même ne pas être envoyé par le navigateur.

Idéalement, vous voudrez soit:

  • Ajouter l'adresse de retour à la demande en tant que variable de requête (par exemple? Back =/list)
  • Définir une page de retour dans votre code (toutes les soumissions de formulaire réussies seront redirigées vers la page de liste)
  • Fournir à l'utilisateur l'option de la prochaine destination (par exemple, Sauvegarder et continuer l'édition ou simplement Sauvegarder)
226
Dimitry

C'est tellement simple

header("location:javascript://history.go(-1)");

Cela fonctionne bien pour moi

21
Hammad

Vous devez enregistrer cet endroit en quelque sorte.

Supposons qu'il s'agisse d'un formulaire POST, il suffit de placer l'emplacement actuel dans un champ masqué, puis de l'utiliser dans l'emplacement header().

13
Your Common Sense

Juste un petit ajout: je pense que l'ajout de exit; après la fonction d'en-tête est une chose courante et bien connue au cas où nous ne voulons pas que le reste du code soit chargé ou exécuté ...

header('Location: ' . $_SERVER['HTTP_REFERER']);
exit;
9
6opko

Essayez ceci en Javascript:

 $previous = "javascript:history.go(-1)";

Ou vous pouvez l'essayer en PHP:

if(isset($_SERVER['HTTP_REFERER'])) {
    $previous = $_SERVER['HTTP_REFERER'];
}
2
Minu Alex

Stocker l'URL précédente dans une variable de session est mauvais, car l'utilisateur peut cliquer avec le bouton droit de la souris sur plusieurs pages, puis revenir et sauvegarder.

sauf si vous enregistrez l'URL précédente dans la variable de session dans un champ masqué du formulaire et après l'en-tête de sauvegarde ("Emplacement: enregistrer l'URL de la page appelante");

1
rudy