PHP刷新窗口?等同于F5页面重新加载吗?

13

在PHP中,是否有相当于手动按下F5页面重新加载按钮的功能?我的PHP脚本在框架中并不是父脚本,但需要刷新整个页面而不仅仅是刷新其框架。

10个回答

29

实际上这是可能的:

Header('Location: '.$_SERVER['PHP_SELF']);
Exit(); //optional

它会重新加载相同的页面。


这个应该被标记为已批准,因为它在 PHP 中完全达到了预期的效果(无需 JavaScript 或插入 HTML)。 - Petrus K.
@Ryuji 这并没有解决原始问题。这会导致父文档重新加载吗? - Mike Brant
1
@MikeBrant 因为这正是它所做的。它命令 PHP 重新加载同一页。 - NewProger
@NewProger 你应该意识到这会导致无限重定向吧?而且你也应该知道原问题是关于如何从子窗口重新加载父窗口,而这种方法根本无法解决。仅仅因为提问者要求 PHP 解决方案,并不意味着一定有这样的解决方案。 - Mike Brant

7

使用PHP,您可以处理服务器端的任务。您可以在iframe中打印以下内容:

parent.window.location.reload();

1
另外还有一个问题。我执行了以下代码:echo "<body onload="parent.window.location.reload()">"; 这会重新加载整个页面,这正是我需要的,但是包含执行php脚本的框架没有更新。我似乎无法调用另一个parent.window.location.reload或者onload="window.location='$page'",我该怎么办? - user840930
不确定我是否理解了,但是您是否检查了您的frame src?请检查parent.window是否正确加载它... - gustavotkg
我检查了框架源代码,它是正确的。但是在parent.window.location.reload()上,框架没有正确加载。不确定原因。我该如何检查parent.window是否正确加载它? - user840930
1
parent.window.location.reload() 将重新加载当前页面,无论它是什么。你必须检查 parent.window.location.href 的源代码 =) - gustavotkg
看起来我无法同时重新加载框架和整个页面。 - user840930
但我找到了一个解决方法。在整个页面重新加载后,我只需更改框架即可。它有效。再次感谢您的帮助!!! - user840930

7
如果您在 `

` 标签前有任何文本,则该文本将被视为其前面的空格。

header('Location: http://www.example.com/youformhere.php');

如果您先发送其他文本,那么您将遇到问题。

请改用以下代码:

<?php 
$page = $_SERVER['PHP_SELF'];
echo '<meta http-equiv="Refresh" content="0;' . $page . '">';
?>

请记住,此代码将创建一个无限循环,因此您可能需要对其进行一些条件更改。


5

PHP无法强制客户端执行任何操作。它不能刷新页面,更不能刷新框架的父级。

编辑:当然,你可以让PHP编写JavaScript代码,但这不是PHP在执行,实际上是JavaScript在执行,并且如果禁用了JavaScript,它将失败。

<?php
    echo '<script>parent.window.location.reload(true);</script>';
?>

1
<?php 
echo "<script>window.opener.location.reload();</script>";
echo "<script>window.close();</script>";
?>

1

使用PHP,您可以使用两种重定向方式。在某些问题上,它的工作方式与刷新相同。

您可以使用一个页面redirect.php,并通过GET方法将您的最后一个URL发送到它(例如)。 然后,在redirect.php中,您可以将标题更改为您通过GET方法发送给它的位置。

像这样: 您的页面:

<?php
header("location:redirec.php?ref=".$your_url);
?>

redirect.php:

<?php
$ref_url=$_GET["ref"];
header("location:redirec.php?ref=".$ref_url);
?>

那对我很有帮助。


0

要手动刷新页面,您只需要提供指向同一页面的链接即可。

像这样: 刷新选择


0

使用JavaScript来完成。您可以这样做:

echo '
<script type="text/javascript">
   parent.window.location.reload(true);
</script>
';

在PHP中,它将刷新父框架页面。

0

你可以使用 meta 标签来定期刷新,例如:

<meta http-equiv="refresh" content="600" url="your-url-here"> 

-2

在页面头部添加以下内容对我有效:

<?php

if($i_wanna_reload_the_full_page_on_top == "yes")
{
$reloadneeded = "1";
}
else
{
$reloadneeded = "0";
}

if($reloadneeded > 0)
{
?>
<script type="text/javascript">
top.window.location='indexframes.php';
</script>
<?php
}else{}
?>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接