2009-11-12 5 views
2

J'ai un site d'une page qui contient du code PHP. Une fois que l'utilisateur appuie sur 'Envoyer', cela envoie les informations à mon email, puis affiche une boîte de message indiquant que l'action a été un succès pour l'utilisateur - super. Après la fermeture de la boîte de message, le site Web reste sur website.com/report.php. Est-il possible de le rediriger vers la page d'origine.Redirection HTML vers la page d'origine

En outre, n'importe quel moyen de changer l'icône dans la boîte de message qui apparaît? Voici le code que j'ai: <script language="JavaScript">alert("Your request has been sent. I will contact you soon!");</script>

Merci.

Répondre

4

Regardez dans window.open et window.location

place après votre alerte()

http://www.tizag.com/javascriptT/javascriptredirect.php

De plus, pour répondre à votre icône messagebox question: Non, il est et non modifiable dépendant navigateur .

Si vous voulez faire cela, vous allez avoir besoin de faire semblant avec html/css et javascript.

+0

Assurez-vous de grâce pour ceux dégradez sans javascript. Vous ne voulez pas qu'un utilisateur non JS soit bloqué sur une page vierge :) – BStruthers

+0

Bien que j'évite complètement le javascript, vous êtes le seul (jusqu'à présent) à ne pas suggérer d'utiliser un emplacement d'en-tête lorsqu'il demande comment rediriger après l'envoi du contenu de la page. –

+0

et de provoquer une redirection automatique en utilisant un délai chronométré sans utiliser javascript consultez la balise meta pour http-equiv = "refresh"

0

Utilisez la commande php header

<?php 
header("Location: http://www.example.com/"); 
exit; 
?> 
+0

Nice, vous me battre à lui par 15 secondes. –

+0

Cette méthode n'afficherait pas l'alerte. –

-1

Vers la fin de votre php, utilisez ceci:

header('location: home.php'); 

Cela entraînera le navigateur pour charger la page d'origine.

Je ne crois pas que la boîte d'alerte standard puisse être modifiée, à part le message. Vous ne pouvez pas changer le titre ou les boutons non plus.

Frank

+1

Cette méthode n'affiche pas l'alerte ou ne redirige pas réellement. Soit l'en-tête sera envoyé avant le contenu de la page (et l'alerte JS) entraînant la redirection de la page sans alerte, soit si le contenu de la page a été envoyé avant que l'en-tête soit défini, l'en-tête n'aura aucun effet. –

+0

Ahh, j'ai fait l'hypothèse que la première page a déclenché l'alerte, pas le script de traitement. Je suppose qu'il pourrait tamponner la sortie ... mais cela semble beaucoup plus difficile que de simplement utiliser 'window.location()' après 'alert()'. –

+0

Comme indiqué dans la page de manuel de PHP pour [header] (http://php.net/header), il doit être utilisé avant toute autre sortie. – Jocelyn

0

Pour faire une redirection en PHP, utilisez header("Location: page.php"); pour cela. Avant et après cela, votre code ne devrait pas envoyer d'autre sortie à la réponse. Utilisez éventuellement exit(); pour terminer le script par la suite.

Si vous avez besoin de la page qui a été demandée juste avant cette page, alors mieux que ce que vous pouvez faire est d'inclure son URL comme paramètre de demande du lien à report.php et de l'utiliser comme destination de redirection. Par exemple.

<a href="report.php?referrer=<?php echo $_SERVER['REQUEST_URI']; ?>">report</a> 

et dans le report.php passer le champ de saisie comme cachée:

<input type="hidden" name="referrer" value="<?php echo getParam("referrer"); ?>"> 

Et après la présentation du rapport font:

header("Location: " . getParam("referrer") . ")"; // getParam() returns sanitized GET parameter. 

Une alternative est d'utiliser l'en-tête $_SERVER['HTTP_REFERER'] (oui, y compris la faute de frappe) pour cela, mais ce n'est pas si fiable car il peut être désactivé ou usurpé par le client.

1
<script language="JavaScript"> 
alert("Your request has been sent. I will contact you soon!"); 
window.location.assign("http://website.com"); 
</script> 

Si vous voulez changer l'icône en zone d'alerte ou faire regarder un peu de fantaisie, vous pouvez essayer YUI dialog

0

je crois une solution plus élégante est de présenter simplement à l'utilisateur une page de confirmation (au lieu d'une boîte d'alerte), et placez un lien vers la page précédente.

Cela fonctionnerait au moins pour tous les utilisateurs.

Pour les utilisateurs avec javascript un peu Ajax (jQuery) pourrait soumettre le formulaire pour vous, et afficher le nessage de confirmation. Tout sans quitter la page, l'utilisateur est sur (niant le besoin de redirections de fantaisie).

1

Utilisez ce code pour afficher l'alerte:

function displayAlert(message, redirect) { 
    alert(message); 
    window.location.href = redirect; 
} 

Ensuite, vous pouvez utiliser le code:

displayAlert("This is the message", "http://redirect.the/user/here"); 
Questions connexes