使用PHP刷新页面


148

如何定期使用PHP刷新页面?如果用PHP无法做到,那么推荐的最佳方案是什么?


我们是在谈论同步(您在解析php脚本时遇到要刷新的情况)刷新(元刷新会正常工作)还是在异步刷新页面(更像是javascript / ajax)?
Najzero 2012年

Answers:


275

您可以使用PHP来做到这一点:

header("Refresh:0");

它会刷新您的当前页面,如果需要将其重定向到另一个页面,请使用以下命令:

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

1
刷新不是官方标头,但自Netscape Navigator以来,许多浏览器均支持刷新。这意味着您必须进行测试以确保您的受众使用支持的浏览器。
Patanjali

5
使用0将连续锤击服务器和/或本地缓存,尤其是在页面上有图像时。如果您只需要更新屏幕上的信息(例如股票价格),而无需以表格或javascript的形式使用该信息,则可以使用指向要更新信息的页面的iframe标记,并适当延迟当前信息必须是。
Patanjali

1
这会导致我的代码中出现“标题已发送”错误 ...还有另一种方法吗?
DBS

在这里检查解决方案;tldr,使用前您无法输出任何内容header();
adrian

109

PHP中,您可以使用:

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

或者只是使用JavaScript的window.location.reload()


2
Yazana标头('Location:')用于将用户重定向到任何url,您无法使用它刷新页面。
Patriks 2012年

2
Pratik。你错了。您确实可以使用header(“ refresh:”)刷新页面
131年

6
尽管我希望没有等待时间,但您可以两者都做:header("Location: ".$_SERVER['PHP_SELF']);
John Magnolia

4
关于此解决方案的说明:如果您的站点正在实施某种形式的路由或URL重写(即默认情况下几乎是任何框架),您可能会找到$_SERVER['PHP_SELF']真正的脚本路径,而不是在浏览器中看到的实际URL。在这种情况下,请尝试$_SERVER['REQUEST_URI']改用。
BadHorsie '16

18

您肯定可以使用PHP定期刷新页面:

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

这将每三秒钟刷新一次页面。



12

我发现了两种刷新PHP内容的方法:

1.使用HTML meta标签:

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标签刷新页面:

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

请参阅元刷新 - “在给定的时间间隔后自动刷新当前网页或框架”

您可以在该content值内设置时间。


3
这将每0秒刷新一次-可能不是您想要的结果:)
沃伦

3
是的,我在评论这个答案:总是有改进的空间。而且您说对了,您可以将content秒数设置为任何值-我的评论仍然值得一提,刷新0秒可能不是您想要的:)
沃伦

2
@Mathlight和其他任何人抱怨评论延迟。仅仅因为您可能会继续前进,将来的读者可能才刚刚遇到该问题,因此您的答案/评论以及所有对此提出质疑的延迟评论可能仍然与他们相关。
Patanjali

1
@Mathlight我不确定为什么人们会认为仅仅因为帖子太旧而对它发表评论没有任何价值。您应该处理掉这种想法。
Mark Kramer

“在if语句中构建”是什么意思?
彼得·莫滕森

2

header('Location: .'); 似乎可以在Chrome,Firefox,Edge和Internet Explorer 11中刷新页面。


应当(一次):php.net/manual/en/function.header.php:“第二个特殊情况是“ Location:”标头。它不仅将此标头发送回浏览器,而且还返回除非已设置201或3xx状态代码,否则将向浏览器返回REDIRECT(302)状态代码。”
Sz。

但这不是OP要求的。我仍然支持它,因为我意识到只有之后,对不起。快到圣诞节了!:)
Sz。

1

您无法在PHP中完成。页面加载后,PHP死亡并且失去控制。

您有几种选择:

  • 使用JavaScript
  • 使用刷新元标记, <meta http-equiv="refresh" content="5">

我认为refresh meta标签是最简单,最方便的。


63
错误的,如果使用PHP的标头函数,则可以使用PHP定期刷新页面:header(“ refresh:3;”);
2013年

1
您可以使用标头在PHP中刷新页面。另外,使用META REFRESH对于SEO也不理想。
TheCarver

1
我认为这是错误的,总是有一种方法:我认为如果他想过一段时间后用php刷新页面,可以将ajax请求发送到具有php刷新代码的页面。但您的回答
总会

2
错了!请修正您的答案...确实可以使用PHP
M_R_K 2015年

1
这是完全错误的!百般。它可以通过PHP,标头(刷新)和触发的重定向来完成。似乎所有其他答案都更好。
Budimir Grom

1

您可以使用JavaScript刷新。除了可以刷新整个页面外,还可以在div中提供要刷新的内容。然后,通过使用JavaScript,您可以仅刷新特定的div,并且比整个页面刷新速度更快。


2
如果包含代码,此答案可能会更容易理解。
I.A.A. Guy

1

PHP是服务器端语言,因此您无法使用PHP刷新页面,但是JavaScript是刷新页面的最佳选择:

location.reload();

访问Location reload()方法


1
哈哈哈,好吧,随你便。出这个=>(rightDomain.epl.fanxt.com),他没有指定要在页面加载后刷新页面。如果刷新的决定是在执行php代码的过程中做出的,则php当然可以刷新,并且可以选择刷新几秒后。
Mohammed Joraid

@Ahmad,您不能认为它是PHP的功能,而是HTML的功能。所以在排序中,您可以通过设置html响应标头来实现。这就是为什么我说过无法使用PHP做到这一点的原因。另外,加载后/需要时无法刷新页面。是的,您可以在回答时将其设置几秒钟等。
Patriks 2014年

哦,技术性。认为可以使用标题刷新特定图像吗?那就是如果您通过粗糙的php流图像。
EZFrag 2014年

真的@EZFrag,我不知道,你能告诉我这怎么可能吗?
Patriks 2014年

是的,找到了。一开始,我尝试了一个普通的图片标签。没运气。但是后来我用iframe标签替换了图片标签,瞧。图像自动刷新。这将对我的某些页面状态图像有很大帮助:)对于那些想知道的人,我正在通过php和刷新标头提供图像,将php文件设置为iframe的src。
EZFrag 2014年


1

在PHP中添加此meta标签可能会有所帮助:

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

3
尽管此代码段可以解决问题,但提供说明确实有助于提高您的帖子质量。请记住,您将来会为读者回答这个问题,而这些人可能不知道您提出代码建议的原因。
DimaSan

但是问题不在于重定向。这是关于刷新。
彼得·莫滕森

0

一种技巧是在URL末尾添加一个随机数。这样,您不必每次都重命名文件。例如:

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

只要随机数不同,浏览器就不会缓存它,但是Web服务器将忽略它。


2
如何定期刷新页面?您是否在回答另一个答案?
Peter Mortensen
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.