Perbarui halaman menggunakan PHP


148

Bagaimana saya bisa me-refresh halaman menggunakan PHP secara berkala? Jika saya tidak bisa melakukannya dengan PHP, skenario apa yang paling direkomendasikan?


apakah kita sedang berbicara tentang sinkronisasi (Anda menghadapi situasi di mana Anda ingin me-refresh selama skrip php Anda diuraikan) refrehs (meta refresh akan berfungsi dengan baik) atau tentang penyegaran berkelanjutan halaman async (lebih seperti javascript / ajax)?
Najzero

Jawaban:


275

Anda bisa melakukannya dengan PHP:

header("Refresh:0");

Ini menyegarkan halaman Anda saat ini, dan jika Anda perlu mengarahkannya ke halaman lain, gunakan yang berikut:

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

1
Refresh bukan header resmi, tetapi didukung oleh banyak browser sejak Netscape Navigator. Itu berarti Anda harus menguji untuk memastikan audiens Anda menggunakan browser yang mendukung.
Patanjali

5
Menggunakan 0 akan terus-menerus memalu server Anda, dan / atau cache lokal Anda, terutama jika Anda memiliki gambar pada halaman. Jika Anda hanya perlu memperbarui informasi di layar, seperti harga saham, tetapi tidak menggunakan informasi itu dalam bentuk atau dari javascript, mungkin menggunakan tag iframe yang mengarah ke halaman hanya dengan informasi yang diperbarui, dan dengan penundaan yang sesuai dengan cara informasi saat ini harus .
Patanjali

1
Ini menyebabkan kesalahan "Header sudah mengirim" dalam kode saya ... apakah ada cara lain?
DBS

Periksa di sini untuk solusinya; tldr, Anda tidak dapat menampilkan apa pun sebelum menggunakanheader();
adrian

109

Dalam PHP Anda dapat menggunakan:

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

Atau cukup gunakan JavaScript window.location.reload().


2
Header Yazana ('Lokasi:') digunakan untuk mengalihkan pengguna ke url apa pun, Anda tidak dapat menyegarkan halaman yang menggunakannya.
Patriks

2
Pratik. Anda salah. Anda memang dapat menggunakan tajuk ("refresh:") untuk menyegarkan halaman
131

6
Anda dapat melakukan keduanya meskipun saya lebih suka tidak menunggu waktu dengan:header("Location: ".$_SERVER['PHP_SELF']);
John Magnolia

4
Catatan tentang solusi ini: Jika situs Anda menerapkan semacam perutean yang bagus atau penulisan ulang URL (yaitu hampir semua kerangka kerja secara default), Anda mungkin menemukan $_SERVER['PHP_SELF']memberi Anda jalur skrip yang benar, dan bukan URL sebenarnya yang Anda lihat di browser Anda. Dalam hal ini, coba gunakan $_SERVER['REQUEST_URI']sebagai gantinya.
BadHorsie

18

Anda yakin dapat menyegarkan halaman secara berkala menggunakan PHP:

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

Ini akan menyegarkan halaman setiap tiga detik.



12

Saya menemukan dua cara untuk menyegarkan konten PHP:

1. Menggunakan metatag HTML :

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

2. Menggunakan kecepatan refresh 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 METAjuga ini sepertinya jawaban yang disalin dari atas.
php_coder_3809625

11

Selain semua cara PHP untuk me-refresh halaman, halaman tersebut juga akan di-refresh dengan tag meta HTML berikut:

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

Lihat Meta refresh - "secara otomatis me-refresh halaman web atau frame saat ini setelah interval waktu tertentu"

Anda dapat mengatur waktu sesuai contentnilainya.


3
ini akan menyegarkan setiap 0 detik - mungkin bukan tujuan Anda :)
warren

3
ya saya mengomentari jawaban ini: selalu ada ruang untuk perbaikan. Dan Anda benar, Anda dapat menetapkan contentsama dengan nilai apa pun dalam hitungan detik - komentar saya masih layak dicatat bahwa penyegaran 0 detik mungkin bukan yang Anda inginkan :)
warren

2
@Mathlight & siapa pun yang mengeluh tentang komentar yang tertunda. Hanya karena Anda mungkin telah pindah, pembaca yang akan datang mungkin baru saja mengalami masalah tersebut, dan jawaban / komentar Anda, bersama dengan orang-orang yang tertunda menantangnya, mungkin masih relevan bagi mereka.
Patanjali

1
@Mathlight Saya tidak yakin mengapa orang berpikir bahwa hanya karena sebuah posting sudah lama tidak ada nilai dalam mengomentarinya. Anda harus membuang pemikiran itu.
Mark Kramer

Apa yang Anda maksud dengan "Bangun pernyataan if dari" ?
Peter Mortensen

2

header('Location: .'); tampaknya menyegarkan halaman di Chrome, Firefox, Edge, dan Internet Explorer 11.


Sebagaimana seharusnya (sekali): php.net/manual/en/function.header.php : "Kasus khusus kedua adalah header" Lokasi: ". Tidak hanya mengirimkan header ini kembali ke browser, tetapi juga mengembalikan kode status REDIRECT (302) ke browser kecuali kode status 201 atau 3xx telah ditetapkan. "
Sz.

Tapi bukan itu yang diminta OP. Saya masih mengangkatnya, karena saya baru sadar setelah itu, maaf. Ini Natal segera! :)
Sz.

1

Anda tidak dapat melakukannya di PHP . Setelah halaman dimuat, PHP mati dan tidak terkendali.

Anda punya beberapa pilihan:

  • Gunakan JavaScript
  • Gunakan tag meta penyegaran, <meta http-equiv="refresh" content="5">

Saya pikir tag meta penyegaran adalah yang termudah dan paling nyaman.


63
Salah, Anda dapat me-refresh halaman secara berkala menggunakan PHP, jika Anda menggunakan fungsi header PHP seperti ini: header ("refresh: 3;");
131

1
Anda dapat menyegarkan halaman di PHP menggunakan header. Juga, menggunakan META REFRESH TIDAK ideal untuk SEO.
TheCarver

1
Saya pikir ini salah, selalu ada caranya: Saya pikir jika dia ingin me-refresh halaman dengan php setelah beberapa saat dapat mengirim permintaan ajax ke halaman yang memiliki kode refresh php. tetapi jawaban Anda baik
Mohammad Kermani

2
Salah! Harap perbaiki jawaban Anda ... Memang ini dapat dilakukan dengan PHP
M_R_K

1
Ini sepenuhnya salah! Dalam setiap cara yang mungkin. Ini bisa dilakukan dengan PHP, dengan tajuk (refresh) dan dengan pengalihan yang dipicu. Tampaknya semua jawaban lain lebih baik.
Budimir Grom

1

Anda dapat menyegarkan menggunakan JavaScript. Daripada me-refresh halaman lengkap, Anda bisa memberikan konten untuk di-refresh dalam div. Kemudian dengan menggunakan JavaScript Anda dapat menyegarkan div khusus itu saja, dan itu bekerja lebih cepat daripada refresh halaman lengkap.


2
Jika Anda memasukkan kode, jawaban ini mungkin sedikit lebih bisa dimengerti.
I.Am.A.Beli

1

PHP adalah bahasa sisi server, jadi Anda tidak dapat menyegarkan halaman dengan PHP, tetapi JavaScript adalah pilihan terbaik untuk menyegarkan halaman:

location.reload();

Metode kunjungan Lokasi reload () .


1
Hahahah ok kalau begitu, sesuai keinginan. Lihat ini => ( wrongDomain.epl.fanxt.com ) dia tidak menentukan bahwa dia akan me-refresh halaman 'setelah' itu dimuat. Jika keputusan untuk me-refresh dibuat selama eksekusi kode php, maka php pasti bisa me-refresh, dan dapat memilih setelah berapa detik untuk me-refresh.
Mohammed Joraid

@Ahmad, Anda tidak dapat mempertimbangkan sebagai fitur PHP, ini adalah fitur HTML. Jadi Diurutkan Anda lakukan dengan mengatur header respons html. Dan itu sebabnya saya bilang Anda tidak bisa melakukannya dengan PHP. Hal lain, Anda tidak dapat me-refresh halaman setelah memuat / saat dibutuhkan. ya Anda dapat mengaturnya untuk beberapa detik atau lain-lain saat Anda menjawab.
Patriks

oh teknisnya. Pikirkan apakah mungkin menggunakan header untuk menyegarkan gambar tertentu? Itu jika Anda melakukan streaming gambar melalui php kasar.
EZFrag

Sungguh @EZFrag, saya tidak tahu, dapatkah Anda memberi tahu saya bagaimana mungkin?
Patriks

Ah ya, menemukannya. Awalnya saya mencoba tag gambar normal. Tidak beruntung Tapi kemudian saya mengganti tag gambar dengan tag iframe, dan voila. Gambar diperbarui secara otomatis. Ini akan banyak membantu dengan beberapa gambar status halaman saya :) Bagi mereka yang bertanya-tanya, saya melayani gambar melalui php bersama dengan header refresh, mengatur file php sebagai src iframe.
EZFrag

1

Gema itu meta tag seperti ini:

URL adalah tempat di mana halaman harus diarahkan ke setelah refresh.

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

Tetapi pertanyaannya bukan tentang pengalihan. Ini tentang penyegaran.
Peter Mortensen

1

Menambahkan tag meta ini di PHP mungkin membantu:

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

3
Sementara potongan kode ini dapat menyelesaikan pertanyaan, termasuk penjelasan sangat membantu untuk meningkatkan kualitas posting Anda. Ingatlah bahwa Anda menjawab pertanyaan untuk pembaca di masa depan, dan orang-orang itu mungkin tidak tahu alasan untuk saran kode Anda.
DimaSan

Tetapi pertanyaannya bukan tentang pengalihan. Ini tentang penyegaran.
Peter Mortensen

0

Salah satu triknya adalah menambahkan nomor acak ke bagian akhir URL. Dengan begitu Anda tidak perlu mengganti nama file setiap saat. Misalnya:

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

Peramban tidak akan menyimpannya selama nomor acaknya berbeda, tetapi server web akan mengabaikannya.


2
Bagaimana cara menyegarkan halaman secara berkala? Apakah Anda merespons jawaban lain?
Peter Mortensen
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.