Aan
Aan

Reputation: 12890

Refresh a page using PHP

How can I refresh a page using PHP periodically? If I can not do it by PHP, what is the best recommended scenario?

Upvotes: 211

Views: 1417048

Answers (14)

Ehsan Mohebbi
Ehsan Mohebbi

Reputation: 107

Add the following function to your project:

function redirect($filename) {
    if (!headers_sent())
        header('Location: '.$filename);
    else {
        echo '<script type="text/javascript">';
        echo 'window.location.href = \''.$filename.'\';';
        echo '</script>';
        echo '<noscript>';
        echo '<meta http-equiv="refresh" content="0;url=\''.$filename.'\'" />';
        echo '</noscript>';
    }
    exit();
}

function call:

redirect($_SERVER['REQUEST_URI']);

Upvotes: 1

Mathlight
Mathlight

Reputation: 6653

Besides all the PHP ways to refresh a page, the page will also be refreshed with the following HTML meta tag:

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

See Meta refresh - "automatically refresh the current web page or frame after a given time interval"

You can set the time within the content value.

Upvotes: 19

0x45
0x45

Reputation: 819

One trick is to add a random number to the end of the URL. That way you don't have to rename the file every time. E.g.:

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

The browser will not cache it as long as the random number is different, but the web server will ignore it.

Upvotes: 0

Ben Guest
Ben Guest

Reputation: 1558

header('Location: .'); seems to refresh the page in Chrome, Firefox, Edge, and Internet Explorer 11.

Upvotes: 7

Siddharth Shukla
Siddharth Shukla

Reputation: 1131

Adding this meta tag in PHP might help:

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

Upvotes: 1

Thanos
Thanos

Reputation: 351

I've found two ways to refresh PHP content:

1. Using the HTML meta tag:

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

2. Using PHP refresh rate:

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

Upvotes: 20

Prakash Patil
Prakash Patil

Reputation: 107

Echo the meta tag like this:

URL is the one where the page should be redirected to after the refresh.

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

Upvotes: 3

Kamlesh
Kamlesh

Reputation: 664

That is simply possible with header() in PHP:

header('Refresh: 1; url=index.php');

Upvotes: 19

Patriks
Patriks

Reputation: 1012

PHP is server-side language, so you can not refresh the page with PHP, but JavaScript is the best option to refresh the page:

location.reload();

The visit Location reload() method.

Upvotes: -1

user1847051
user1847051

Reputation:

You can do it with PHP:

header("Refresh:0");

It refreshes your current page, and if you need to redirect it to another page, use following:

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

Upvotes: 390

131
131

Reputation: 1385

You sure can refresh a page periodically using PHP:

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

This will refresh the page every three seconds.

Upvotes: 21

Anoop
Anoop

Reputation: 130

You can refresh using JavaScript. Rather than the complete page refresh, you can give the contents to be refreshed in a div. Then by using JavaScript you can refresh that particular div only, and it works faster than the complete page refresh.

Upvotes: 1

AboQutiesh
AboQutiesh

Reputation: 1716

In PHP you can use:

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

Or just use JavaScript's window.location.reload().

Upvotes: 126

JvdBerg
JvdBerg

Reputation: 21856

You cannot do it in PHP. Once the page is loaded, PHP dies and is out of control.

You have a few options:

  • Use JavaScript
  • Use the refresh meta tag, <meta http-equiv="refresh" content="5">

I think that the refresh meta tag is the easiest and most convenient.

Upvotes: -2

Related Questions