Создание видимого перенаправления? - PullRequest
0 голосов
/ 01 октября 2009

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

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

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

Ответы [ 4 ]

3 голосов
/ 01 октября 2009

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

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

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

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

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

2 голосов
/ 01 октября 2009

Вам необходимо вывести свою страницу, которая будет включать следующее ключевое слово 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

1 голос
/ 01 октября 2009

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

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

0 голосов
/ 01 октября 2009

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

Чтобы показать сообщение, вы можете использовать мета-метод, упомянутый в некоторых других ответах, возможно, даже добавить к нему редирект 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 () может работать некорректно с ожидаемой буферизацией вывода

...