2010-03-30 6 views
29

J'utilise un formulaire pour "évaluer" une page. Cette forme "publie" des données dans un script PHP ailleurs. Je veux simplement afficher un lien après le traitement du formulaire qui ramènera l'utilisateur à la page précédente. Puis-je le faire en utilisant javascript dans mon script php?Retour à la page précédente

GF

Répondre

72

Vous pouvez utiliser un lien pour appeler history.go(-1) en Javascript, qui est essentiellement équivalent à cliquer sur le bouton Retour. Idéalement, cependant, il serait préférable de simplement créer un lien vers l'URL d'où l'utilisateur a été posté dans le formulaire - de cette façon, le "flux" de l'histoire est préservé et l'utilisateur ne se demande pas pourquoi il a quelque chose Cliquez sur "Transférer" à qui est en train de simplement soumettre le formulaire à nouveau.

+0

Comment puis-je utiliser un lien pour appeler ce morceau de javascript? –

+4

link text here... ne fonctionnera pas lorsque l'utilisateur a supprimé l'historique en effaçant le cache ... – user1400915

3

Si votre serveur Web correctement redirects vous à une nouvelle page après avoir fait un post, le bouton "retour" régulier sur le navigateur fonctionnera. Ou le "history.go (-1)" en javascript. Cela produira un formulaire rempli. Cependant, si le serveur ne fait que renvoyer du nouveau contenu sans le rediriger, alors history.go (-1) ne va pas vous aider. À ce moment-là, vous avez perdu votre forme.

Si vous souhaitez simplement revenir à l'URL précédente, il vous suffit de créer un lien avec une balise A HREF. Cela vous montrera un formulaire vide.

+0

PHP peut générer des redirections quel que soit le serveur Web. –

+1

True, mais PHP s'exécute sur le serveur. Je parle de client-serveur, pas du logiciel qui tourne sur le serveur. – drozzy

30

Cela dépend de ce que vous essayez de faire avec. Vous pouvez utiliser quelque chose comme ceci:

echo "<a href=\"javascript:history.go(-1)\">GO BACK</a>"; 

C'est l'option la plus simple. L'autre affiche a raison d'avoir un bon déroulement de l'histoire, mais c'est un exemple pour vous.

Juste édité, la version orig n'était pas indentée et ne ressemblait à rien. ;)

+0

@dscher Parfait réponse bro, je cherchais quelque chose comme ça et heureusement trouvé votre réponse. – V15HM4Y

21

vous spécifiquement demandé des solutions JS, mais dans le cas où quelqu'un visite votre formulaire avec JS désactivé une sauvegarde de PHP est toujours agréable:

lorsque les charges de forme saisir l'adresse de la page précédente par quelque chose comme $previous = $_SERVER['HTTP_REFERER']; et puis définissez-le comme <input type="hidden" value="$previous" /> dans votre formulaire. Lorsque vous traitez votre formulaire avec le script, vous pouvez saisir cette valeur et la coller dans le header("Location:___") ou coller l'adresse directement dans un lien pour les renvoyer d'où ils viennent

Aucun JS, assez simple, et vous pouvez le structurer de sorte qu'il n'est géré que si le client n'a pas activé JS.

+0

HTTP_REFERRER n'est-il pas vulnérable aux attaques par injection? Il semble que ce serait le cas. J'aime qu'il ne repose pas sur JS, mais la recherche d'URL valides semble être un problème. La version JS me semble plus sûre. – blindsnowmobile

24

Essayez ceci:

$previous = "javascript:history.go(-1)"; 
if(isset($_SERVER['HTTP_REFERER'])) { 
    $previous = $_SERVER['HTTP_REFERER']; 
} 

en html:

<a href="<?= $previous ?>">Back</a> 

Le code JavaScript est initialize comme solution de repli pour la variable HTTP_REFERER parfois fonctionne pas.

+2

J'ai vraiment aimé votre réponse plus! cette solution redirigera sans une notification contextuelle disant "Form Re-soumission" ou quoi que ce soit. +1 –

8

Comme ceci:

<?php 

    if (isset($_SERVER["HTTP_REFERER"])) { 
     header("Location: " . $_SERVER["HTTP_REFERER"]); 
    } 

?> 
5

On peut montrer un bouton de retour en utilisant le code html dans nos pages qui peuvent prendre la fenêtre du navigateur à la page précédente. Cette page aura un bouton ou un lien et en cliquant sur ce navigateur reviendra à la page précédente. Cela peut être fait en utilisant html ou en utilisant JavaScript dans le côté client.

Voici le code de ce bouton

<INPUT TYPE="button" VALUE="Back" onClick="history.go(-1);"> 

L'utilisation de JavaScript

Nous pouvons utiliser JavaScript pour créer un lien pour nous ramener à la page précédente ou l'histoire. Voici le code pour reculer le navigateur en utilisant le JavaScript côté client.

<a href = "javascript:history.back()">Back to previous page</a> 
1

Je pense que le bouton onclick = "history.back();" est une façon de résoudre le problème.Mais il peut ne pas fonctionner dans les cas suivants:

1.Si la page est actualisée ou rechargée. 2.Si l'utilisateur ouvre le lien dans une nouvelle page. Pour les surmonter, le code suivant pourrait être utilisé si vous savez à quelle page vous devez revenir. Par exemple. Si vous avez un no de liens sur une page et le bouton de retour doit être utilisé pour revenir à cette page.

< entrée type = "bouton" onclick = "document.location.href = 'nom_fichier';" value = "Retour" name = classe "bouton" = "btn">

2

... En regardant le code Facebook ... J'ai trouvé ce

Go Back to Previous Page

0

Peut-être en retard pour cette réponse, mais juste en HTML pur, vous pouvez utiliser alway ./

<a href="./">Return</a>

Questions connexes