Оновіть сторінку за допомогою PHP


148

Як я можу періодично оновлювати сторінку за допомогою PHP? Якщо я не можу це зробити за допомогою PHP, який найкращий рекомендований сценарій?


ми говоримо про синхронізацію (ви стикаєтесь із ситуацією, коли ви хочете оновити під час розбору скрипту php) refrehs (мета-оновлення спрацювало б добре) або про асинхронне постійне оновлення сторінки (більше схоже на JavaScript / ajax)?
Найджеро

Відповіді:


275

Ви можете це зробити за допомогою PHP:

header("Refresh:0");

Він оновлює вашу поточну сторінку, і якщо вам потрібно перенаправити її на іншу сторінку, використовуйте наступне:

header("Refresh:0; url=page2.php");

1
Refresh не є офіційним заголовком, але підтримується багатьма браузерами з часів Netscape Navigator. Це означає, що вам доведеться протестувати, щоб переконатися, що ваша аудиторія використовує підтримувані веб-переглядачі.
Патанджалі

5
Використання 0 постійно забиває ваш сервер та / або ваш локальний кеш, особливо якщо у вас є зображення на сторінці. Якщо вам потрібно лише оновлювати інформацію на екрані, як-от ціни на акції, але не використовувати цю інформацію у формі або з javascript, можливо, використовуйте тег iframe, що вказує на сторінку, а лише інформація, що оновлюється, та із затримкою, відповідною як поточна інформація повинна бути.
Патанджалі

1
Це спричиняє помилку "Заголовки вже надіслані" в моєму коді ... Чи є інший спосіб?
DBS

Перевірте тут рішення; tldr, перед використанням нічого не можна вивестиheader();
Адріан

109

У PHP можна використовувати:

$page = $_SERVER['PHP_SELF'];
$sec = "10";
header("Refresh: $sec; url=$page");

Або просто скористайтеся JavaScript window.location.reload().


2
Заголовок Yazana ("Місцезнаходження:") використовується для перенаправлення користувача на будь-який URL, ви не можете оновити сторінку, використовуючи її.
Патрікс

2
Пратік. Ви неправі. ви дійсно можете використовувати заголовок ("refresh:") для оновлення сторінки
131

6
Ви можете зробити і те, і інше, але я вважаю за краще не чекати часу:header("Location: ".$_SERVER['PHP_SELF']);
Джон Магнолія,

4
Примітка щодо цього рішення: Якщо ваш сайт реалізує якусь приємну маршрутизацію чи перезапис URL-адрес (тобто майже будь-який фреймворк за замовчуванням), ви можете знайти $_SERVER['PHP_SELF']справжній шлях сценарію, а не фактичну URL-адресу, яку ви бачите у своєму браузері. У такому випадку спробуйте використовувати $_SERVER['REQUEST_URI']замість цього.
BadHorsie

18

Ви впевнено можете періодично оновлювати сторінку за допомогою PHP:

<?php
    header("refresh: 3;");
?>

Це оновлюватиме сторінку кожні три секунди.



12

Я знайшов два способи оновлення вмісту PHP:

1. Використання metaтегу HTML :

echo("<meta http-equiv='refresh' content='1'>"); //Refresh by HTTP 'meta'

2. Використовуючи частоту оновлення PHP:

$delay = 0; // Where 0 is an example of a time delay. You can use 5 for 5 seconds, for example!
header("Refresh: $delay;"); 

2
//Refresh by HTTP META => // Refresh by HTML METAтакож це виглядає як відповідь, скопійована зверху.
php_coder_3809625

11

Окрім усіх способів PHP оновити сторінку, вона також буде оновлена ​​за допомогою наступного метатега HTML:

<meta http-equiv="refresh" content="5">

Див. Розділ Meta refresh - "автоматично оновити поточну веб-сторінку або кадр через заданий проміжок часу"

Ви можете встановити час у межах contentзначення.


3
це оновлюватиметься кожні 0 секунд - ймовірно, не те, на що ви збираєтесь :)
warren

3
так, я коментую цю відповідь: завжди є можливість для вдосконалення. І ви маєте рацію, ви можете встановити contentрівне будь-якому значенню в секундах - мій коментар все-таки варто зазначити, що оновлення на 0 секунд - це, мабуть, не те, що ви збираєтеся :)
warren

2
@Mathlight та хто інший скаржиться на затримки коментарів. Тільки тому, що ви, можливо, продовжили роботу, майбутній читач, можливо, щойно випробував цю проблему, і ваша відповідь / коментар, а також затримки, які оскаржують його, все ще можуть бути актуальними для них.
Патанджалі

1
@Mathlight Я не впевнений, чому люди думають, що лише тому, що публікація стара, не можна мати ніякого значення, коментуючи її. Вам слід розпоряджатися цим мисленням.
Марк Крамер

Що ви маєте на увазі під "Створити в операторі if із" ?
Пітер Мортенсен

2

header('Location: .'); здається, оновить сторінку в Chrome, Firefox, Edge та Internet Explorer 11.


Як слід (один раз): php.net/manual/en/function.header.php : "Другий особливий випадок - це заголовок" Місцезнаходження: ". Він не тільки надсилає цей заголовок назад до браузера, але і повертається код ПОБУДОВОГО (302) для браузера, якщо код статусу 201 або 3xx вже не встановлено. "
Sz.

Але це не те, про що просила ОП. Я все-таки відмовився від цього, бо зрозумів, що лише згодом вибач. Скоро Xmas! :)
Sz.

1

Ви не можете зробити це в PHP . Після завантаження сторінки PHP вмирає і виходить з-під контролю.

У вас є кілька варіантів:

  • Використовуйте JavaScript
  • Використовуйте метатег оновлення, <meta http-equiv="refresh" content="5">

Я думаю, що метатег оновлення - це найпростіший і найзручніший.


63
Неправильно, ви можете періодично оновлювати сторінку, використовуючи PHP, якщо ви використовуєте функцію заголовка PHP, наприклад: заголовок ("оновлення: 3;");
131

1
Ви можете оновити сторінку в PHP за допомогою заголовка. Також використання META REFRESH НЕ ідеально підходить для SEO.
TheCarver

1
Я думаю, що це неправильно, завжди є спосіб: я думаю, якщо він хоче через деякий час оновити сторінку за допомогою php, може надіслати запит ajax на сторінку з кодом оновлення php. але взагалі ваша відповідь хороша
Мохаммед Кермані

2
Неправильно! Виправте свою відповідь ... Дійсно це можна зробити за допомогою PHP
M_R_K

1
Це абсолютно неправильно! Усіма можливими способами. Це може бути зроблено PHP, заголовками (оновлення) та запускаються переадресаціями. Здається, що всі інші відповіді кращі.
Будимир Гром

1

Ви можете оновити за допомогою JavaScript. Замість повного оновлення сторінки ви можете дати вмісту оновитись у діві. Тоді за допомогою JavaScript ви можете оновити лише цей конкретний div, і він працює швидше, ніж повне оновлення сторінки.


2
Якщо ви включите код, ця відповідь може бути трохи зрозумілішою.
І.Ам.А.Гуй

1

PHP - це серверна мова, тому ви не можете оновити сторінку PHP, але JavaScript - найкращий варіант оновлення сторінки:

location.reload();

Метод відвідування Location reload () .


1
Ха-ха-ха, тоді, як хочеш. Перевірте це => ( неправильноDomain.epl.fanxt.com ) він не вказав, що оновить сторінку "після", яку вона завантажила. Якщо рішення про оновлення було прийнято під час виконання php-коду, то php, безумовно, може оновитись і може вибрати через скільки секунд оновити.
Мухаммед Жораїд

@Ahmad, ви не можете розглядати як особливість PHP, це особливість HTML. Тож у сортуванні ви робите, встановлюючи html-заголовок відповіді. І тому я сказав, що ти не можеш це зробити з PHP. Інша справа, ви не можете оновити сторінку після завантаження / при необхідності. так, ви можете встановити його на деяку секунду чи інше, як відповіли.
Патрікс

о технічні. Думаєте, чи можна використовувати заголовок для оновлення певного зображення? Тобто, якщо ви передаєте зображення через php грубої.
EZFrag

Дійсно @EZFrag, я не знаю, ви можете мені сказати, як це можливо?
Патрікс

Ага так, знайшов. Спочатку я спробував нормальний тег зображення. Нещастить. Але потім я замінив тег зображення тегом iframe та voila. Зображення оновлюється автоматично. Це дуже допоможе з деякими моїми зображеннями на сторінці сторінки :) Для тих, хто цікавиться, я подаю зображення через php разом із заголовком оновлення, встановлюючи файл php як src iframe.
EZFrag

1

Відлуння meta тег так:

URL - це та адреса, на яку слід перенаправити сторінку після оновлення.

echo "<meta http-equiv=\"refresh\" content=\"0;URL=upload.php\">";

Але питання не в переадресації. Йдеться про оновлення.
Пітер Мортенсен

1

Додавання цього метатега в PHP може допомогти:

echo '<META HTTP-EQUIV="Refresh" Content="0; URL=' . $location . '">';

3
Хоча цей фрагмент коду може вирішити питання, зокрема пояснення дійсно допомагає покращити якість вашої публікації. Пам'ятайте, що ви відповідаєте на запитання читачів у майбутньому, і ці люди можуть не знати причини вашої пропозиції щодо коду.
DimaSan

Але питання не в переадресації. Йдеться про оновлення.
Пітер Мортенсен

0

Один фокус - додати випадкове число до кінця URL-адреси. Таким чином, вам не доведеться перейменовувати файл кожен раз. Наприклад:

echo "<img src='temp.jpg?r=3892384947438'>"

Браузер не буде кешувати його до тих пір, поки випадкове число буде іншим, але веб-сервер буде ігнорувати його.


2
Як це періодично оновлює сторінку? Ви відповідаєте на іншу відповідь?
Пітер Мортенсен
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.