Перенаправлення сторінки через певний час PHP


94

Існує певна функція PHP для переадресації через деякий час. Я десь це бачив, але не пам’ятаю. Це як перенаправлення gmail після входу. Будь ласка, хтось міг мені нагадати?


@zerkms: Схоже, є кілька способів це зробити.
Wesley Murch

2
@Wesley Murch: Refreshзаголовок не є стандартним. Я ніколи не використовував би речі, які не охоплені RFC
zerkms

stackoverflow.com/questions/18305258/… привів мене до stackoverflow.com/questions/283752/refresh-http-header, який говорить, що окрім того, що заголовок оновлення не є стандартним, це також спричиняє проблеми з продуктивністю в Internet Explorer.
Едвард

Відповіді:


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

це спосіб встановити php, headerякий перенаправить вас wherever.phpчерез 5 секунд


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


1
цікаво, я ніколи раніше не бачив цього методу ... але хіба це не відображатиме порожню сторінку або просто простоюватиме без будь-якого повідомлення, поки таймер не закінчиться?
Ібу,

він збирається відобразити сторінку ... все, що вона робить, це встановити заголовок, який відразу скаже браузеру оновлювати сторінку за 5 секунд, якщо ви дійсно хочете відобразити порожню сторінку, просто використовуйтеdie();
Тенефф

2
Погано в цьому: Цей заголовок не входить до стандарту HTTP, клієнти можуть вільно його ігнорувати.
Свен

:) Гарна ідея! А якщо ви хочете надіслати (зберегти) деякі змінні та використовувати на перезавантаженій сторінці?
Мугур Унгуреану

це може бути мільярд років з цього повідомлення, але як ви публікуєте повідомлення під час переспрямування, як, можливо, "Сторінка переадресації, будь ласка, почекайте"
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 - за секунди.


11

ви хочете використовувати php для виписування метатегу.

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

Це не рекомендується, але це можливо. 5 у цьому прикладі - це кількість секунд до оновлення.


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

справді ви можете використовувати цей код, як сказав teneff, але вам не обов'язково ставити заголовок перед будь-яким відправленим висновком (це виведе "неможливо перемістити заголовок ....: помилка 3").

Для вирішення цієї проблеми використовуйте функцію php ob_start();перед тим, як замінити будь-який html.

Щоб припинити ob просто поставити ob_end_flush();після того, як у вас немає вихідних даних html.

ура!


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

2

Ви можете використовувати цей код JavaScript для переспрямування через певний час. Сподіваюся, це спрацює.

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

},10000); // 10 seconds
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.