Перенаправление страницы через определенное время PHP

95

Есть определенная функция PHP для перенаправления через некоторое время. Где-то видел, но не могу вспомнить. Это как перенаправление gmail после входа в систему. Кто-нибудь может напомнить, пожалуйста?

афаолек
источник
@zerkms: Похоже, есть несколько способов сделать это.
Уэсли Мерч
2
@Wesley Murch: Refreshзаголовок не является стандартным. Я бы никогда не использовал вещи, которые не включены в RFC
zerkms
stackoverflow.com/questions/18305258/… привел меня к stackoverflow.com/questions/283752/refresh-http-header, где говорится, что заголовок обновления не только не является стандартным, но и вызывает проблемы с производительностью в Internet Explorer.
Эдвард

Ответы:

231
header( "refresh:5;url=wherever.php" );

это способ установки php, headerкоторый перенаправит вас wherever.phpчерез 5 секунд


Помните, что header () должен вызываться перед отправкой любого фактического вывода либо с помощью обычных тегов HTML, либо пустых строк в файле, либо из PHP. Очень часто возникает ошибка чтения кода с помощью функций include или require или другой функции доступа к файлам, а также наличие пробелов или пустых строк, которые выводятся до вызова header (). Та же проблема существует при использовании одного файла PHP / HTML. (источник php.net )

Teneff
источник
1
интересно, я никогда раньше не видел этот метод ... но разве это не будет отображать пустую страницу или просто бездействовать без какого-либо сообщения, пока не истечет таймер?
Ибу
он будет отображать страницу ... все, что он делает, это устанавливает заголовок, который будет указывать браузеру обновить страницу через 5 секунд, если вы действительно хотите отобразить пустую страницу, просто используйтеdie();
Teneff
2
Плохо то, что этого заголовка нет в стандарте HTTP, клиенты могут его игнорировать.
Sven
:) Отличная идея! А если вы хотите отправить (сохранить) какие-то переменные и использовать на перезагруженной странице?
Мугур Унгуряну
Возможно, прошло миллиард лет с момента этого поста, но как вы публикуете сообщение во время перенаправления, например, «Перенаправление страницы, пожалуйста, подождите»
CAO
25

Вы можете использовать javascript для перенаправления через некоторое время

setTimeout(function () {
   window.location.href= 'http://www.google.com'; // the redirect goes here

},5000); // 5 seconds
Ибу
источник
11
Вопрос был для PHP
Бенджамин Интал
5
@Jami, это правда, поэтому я сказал, что OP может вместо этого использовать javascript.
Ибу
@BenjaminIntal Это также работает как отличный запасной вариант, если браузер игнорирует перенаправление в заголовке. Вам нужно будет использовать браузер, который не принимает заголовок, И отключить Javascript, чтобы не получать перенаправление.
Super Cat
18

Вы можете попробовать это:

header('Refresh: 10; URL=http://yoursite.com/page.php');

Где 10 в секундах.

Royrui
источник
11

вы хотели бы использовать php для записи метатега.

<meta http-equiv="refresh" content="5;url=http://www.yoursite.com">

Это не рекомендуется, но возможно. Цифра 5 в этом примере - это количество секунд до обновления.

Джон
источник
3
header( "refresh:5;url=wherever.php" );

действительно, вы можете использовать этот код, как сказал тенефф, но вам не обязательно помещать заголовок перед любым отправленным выводом (это приведет к ошибке «невозможно переместить заголовок ....: 3»).

Чтобы решить эту проблему, используйте функцию php ob_start();до вывода любого HTML.

Чтобы завершить ob, просто введите ob_end_flush();после того, как у вас нет вывода html.

ура!

JJJack
источник
2

Если вы выполняете перенаправление с помощью PHP, вы должны просто использовать команду sleep (), чтобы засыпать на сколько угодно секунд перед перенаправлением.

Но я думаю, что вы имеете в виду метатег обновления:

http://webdesign.about.com/od/metataglibraries/a/aa080300a.htm

Джейсон Палмер
источник
Использование сна не является традиционным подходом, поскольку, как сказано выше, следует использовать функцию заголовка.
Максим
Не спит просто задерживает соединение?
FluorescentGreen5
2

Обновление PHP через 5 секунд у меня не сработало при открытии диалогового окна «Сохранить как» для сохранения файла: (header ('Content-type: text / plain'); header ("Content-Disposition: attachment; filename = $ filename > ");)

После того, как была нажата ссылка «Сохранить как» и файл был сохранен, обновление по времени остановилось на вызывающей странице.

Тем не менее, большое спасибо, javascript-решение ibu продолжало отмечать и обновлять мою веб-страницу, что мне и нужно для моего конкретного приложения. Так что спасибо ibu за размещение здесь javascript-решения для проблемы php.

Вы можете использовать javascript для перенаправления через некоторое время

setTimeout(function () {    
    window.location.href = 'http://www.google.com'; 
},5000); // 5 seconds
JustJohn
источник
2

Вы можете использовать этот код javascript для перенаправления через определенное время. Надеюсь, это сработает.

setRedirectTime(function () 
{
   window.location.href= 'https://www.google.com'; // the redirect URL will be here

},10000); // 10 seconds
Продип Киртания
источник
0

Перенаправление программирования времени PHP:

 <?php
 header("Refresh:10;url=***-----índex.php--OR----URL-----");
 ?>
ПаулоБоавентура
источник