2009-10-01 4 views
0

S'il vous plaît Pardon si la question semble stupide, mais néanmoins c'est une question que je veux savoir. :)Création d'une redirection visible?

Comment puis-je redirections qui affichent que vous êtes redirigé (comme ancien Gmail et LinkedIn). Chaque fois que j'ai essayé de le faire, j'ai eu des erreurs en disant que les en-têtes étaient déjà envoyés. Puis quelqu'un m'a dit que je ne devrais pas sortir de balisage avant la redirection (comme le login facebook). Alors, comment puis-je y aller et afficher quelque chose de bien lors de la redirection?

+0

Je ne sais pas quelle réponse accepter à la fois igor et anax ont la même réponse. J'ai donc ramassé le coz d'Iigor, il a répondu plus tôt. Merci a tous! – OrangeRind

Répondre

3

vous souhaitez utiliser des redirections de métadonnées. ils vous permettent d'afficher une page, et après quelques secondes cette page vous enverra à la nouvelle page. tout ce que vous avez à faire est d'ajouter une balise à la partie de votre page de redirection "quelque chose de sympa".

Voici un rapide tutoriel sur la méta réoriente: http://webdesign.about.com/od/metataglibraries/a/aa080300a.htm

que vous voulez faire quelque chose comme ceci:

<html> 
    <head> 
    <meta http-equiv="refresh" content="2;url=whereto"> 

étaient est le nombre de secondes pour afficher votre page et vers quoi est l'endroit où vous voulez envoyer votre utilisateur

+1

Toutes les balises meta-equiv ont un en-tête HTTP équivalent (comme son nom l'indique). Donc, une meilleure solution, vu que vous êtes capable de PHP, est de définir un 'Refresh: 2; url = http: // exemple.com 'en-tête, et ne pas polluer votre balisage – Gareth

1

Ces redirections ne sont pas effectuées via des en-têtes HTTP de redirection "normaux". Au lieu de cela, ils affichent une page et utilisent un META Refresh ou du Javascript pour naviguer vers la nouvelle page.

Personnellement, je trouve les deux méthodes pas très agréable, à la fois pour les utilisateurs et pour les moteurs de recherche. En utilisant les en-têtes HTTP qui signifient également pourquoi il y a une redirection (Déplacement permanent, temporaire, & c.) Mieux vaut imho.

+0

ya javascript est là, toujours plus comme le nouveau Gmail qui imite une sorte de redirection. mais s'il vous plaît expliquer ces deux méthodes un peu en détail :) – OrangeRind

2

Vous devez sortir votre page, qui comprendra la suite ng mot-clé META:

<html> 
    <head> 
    <!-- redirection to example.com in 5 seconds --> 
    <meta http-equiv="refresh" content="5;url=http://example.com/" /> 
    ... 
    </head> 
    <body> 
    ... 

Lire l'article suivant pour plus d'aide: http://en.wikipedia.org/wiki/Meta_refresh

0

Si vous obtenez les en-têtes déjà envoyés alors cela signifie que vous essayez de rediriger avec un en-tête de PHP() redirection et que vous aviez sortie sur l'écran avant d'appeler la fonction header(), 1 solution est d'utiliser PHP Output Buffering qui vous permettra alors d'appeler la redirection header() n'importe où sur la page et ne pas obtenir cette erreur.

Pour afficher un message que vous pouvez utiliser la méthode méta mentionné dans d'autres réponses peut-être même jeter dans un redirection JavaScript avec elle, juste pour être sûr cependant la façon dont je le ferais serait quelque chose comme ceci ci-dessous

<?PHP 
ob_start(); 

//show a message 
echo 'You will be redirected in 10 seconds'; 

//amount of time to show the message above before redirecting 
sleep(200); 

//redirect 
header('http://domain.com'); 
?> 

Je n'ai pas testé cela mais vous devriez avoir l'idée, en fait maintenant que j'y pense, sleep() pourrait ne pas fonctionner correctement comme prévu avec la bufferisation de sortie

+0

Cela ne peut pas fonctionner. Tout d'abord, la redirection doit être un en-tête ('Location: http://domain.com'); 'mais en dehors de cela, c'est un en-tête HTTP. Cela signifie que l'instruction de rediriger vers une autre page vient * avant * le corps de la réponse et donc rien ne sera visible. Peu importe si vous faites un «sommeil» du côté du serveur. Ce n'est tout simplement pas comment fonctionne HTTP :-) – Joey

+0

@Johannes Rössel merci pour la clarification – JasonDavis