2009-10-01 2 views
0

Прошу прощения, если вопрос звучит глупо, но тем не менее его вопрос, который я хочу знать. :)Создание видимого перенаправления?

Как перенаправить отображение, на которое вы перенаправляетесь (например, более старые Gmail и LinkedIn). Всякий раз, когда я пытался это сделать, у меня возникали ошибки, говорящие, что заголовки уже отправлены.

Тогда кто-то здесь сказал мне, что я не должен выводить какую-либо разметку перед перенаправлением (например, facebook login). Итак, как мне это сделать и показать что-то приятное во время перенаправления?

+0

Не знаю, какой ответ принять coz и igor и anax имеют тот же ответ. Поэтому я подобрал igor, который он ответил ранее. Спасибо всем! – OrangeRind

ответ

3

вы хотите использовать мета перенаправления. они позволяют вам показывать страницу, и через несколько секунд эта страница отправит вас на новую страницу. все, что вам нужно сделать, это добавить тег к части страницы «что-то приятное» перенаправления.

Вот краткое руководство по мета перенаправляет: http://webdesign.about.com/od/metataglibraries/a/aa080300a.htm

вы хотите сделать что-то вроде этого:

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

были это количество секунд, чтобы отобразить страницу и куда где вы хотите отправить своего пользователя

+1

Все метатеги http-equiv имеют эквивалентный HTTP-заголовок (как следует из названия). Итак, лучшее решение, видя, что вы можете с PHP, - установить пример «Refresh: 2; url = http: //.com ', а не загрязнять вашу разметку. – Gareth

1

Эти перенаправления не выполняются с помощью «обычных» перенаправлений HTTP-заголовков. Вместо этого они отображают страницу и используют либо META Refresh, либо некоторый Javascript для перехода на новую страницу.

Лично я нахожу оба метода не очень приятными, как для пользователей, так и для поисковых систем. Использование HTTP-заголовков, которые также означают , почему есть перенаправление (Постоянно перемещенный, временный, & c.) Являются лучшим способом imho.

+0

ya javascript есть, все больше похожий на новый Gmail, который имитирует своего рода перенаправление. но, пожалуйста, немного объясните эти два метода :) – OrangeRind

2

Вам необходимо вывести свою страницу, в которую войдут следящие нг META ключевое слово:

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

Прочитайте следующую статью для получения дополнительной помощи: http://en.wikipedia.org/wiki/Meta_refresh

0

Если вы получаете заголовки уже прислал то это означает, что вы пытаетесь переориентировать с заголовком PHP() перенаправлять и вы имели вывода на экране перед вызовом функции header(), 1 решением для этого является использование буферизации вывода PHP, которая затем позволит вам вызвать перенаправление заголовка() в любом месте страницы и не получить эту ошибку.

Чтобы показать сообщение, которое вы могли бы использовать мета-метод, упомянутый в некоторых других ответов, может быть, даже бросить в JavaScript перенаправлять с ним, просто чтобы быть в безопасности, однако, как я хотел бы сделать это было бы что-то вроде этого ниже

<?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'); 
?> 

Я не тестировал это, но вы должны получить идею, на самом деле теперь, когда я думаю об этом, sleep() может работать некорректно, как ожидалось, с выходной буферизацией

+0

Это не может работать. Во-первых, перенаправление должно быть «заголовком» («Местоположение: http://domain.com»), но, кроме этого, это HTTP-заголовок. Это означает, что команда перенаправления на другую страницу приходит до * тела ответа, и поэтому ничего не будет видно. Независимо от того, выполняете ли вы «спать» на стороне сервера. Это просто не то, как работает HTTP :-) – Joey

+0

@Johannes Rössel благодарит за разъяснения – JasonDavis

Смежные вопросы