18

似乎不建议使用

<meta http-equiv=REFRESH CONTENT=3;url=url>

用于重定向,而是使用

header('Location: url')

但是,我想向用户显示一些消息,并让他们在重定向之前有时间阅读它。有没有办法在没有元的情况下做到这一点?

4

8 回答 8

40

尝试使用“刷新”标题:

header('Refresh: 3;url=page.php');

此外,您可以查看此 Question Refresh HTTP Header

于 2012-06-22T10:36:09.407 回答
6

使用元刷新标签没有任何问题。

<meta http-equiv="refresh" content="5;URL='http://example.com/'" />

该标签显示等待 5 秒并重定向到 example.com。这个标签不是问题,除非用户使用 IE6 并且它仍然有效,只是破坏了历史按钮。

使用 JavaScript 是一个选项,但请确保包含一个链接,上面写着“如果您没有被自动重定向,请单击此处”。无论哪种方式,您实际上都应该包含该链接。

于 2012-06-22T10:42:59.660 回答
5

php 设置标题的方式,将在 5 秒内将您重定向到 test.php:

header( "refresh:5;url=test.php" );

在发送任何实际输出之前调用。

在javascript中:

setTimeout(function () {
   window.location.href= url; // the redirect goes here
},5000); // 5 seconds
于 2012-06-22T10:39:06.250 回答
4

标题标签在页面加载时发送到浏览器,以便它可以快速将用户重定向到所需的页面,而无需费心呈现它甚至将其加载到历史记录中。因此,一旦页面已经加载,您就不能调用重定向,因为标题已经被处理。

您可以改为执行此操作:

header( "refresh:5;url=wherever.php" );

这基本上将<meta>标签设置在页面本身的标题中,这意味着您不需要写出标签。

于 2012-06-22T10:38:19.897 回答
2

按照你们的说法,理论上这应该可行:

网址:http ://www.example.com/ticketgen/index.php?success=1&redir=1

    <?php
 $myredir = ($_GET['redir']);
    if ($myredir == 1)
    {
        header( "refresh:5;url=http://www.example.com/ticketgen/" );
    }
?>

但它什么也没做。我也有它在页面的顶部,所以它可以发送标题。

我刚刚发现它在 Firefox 中不起作用。

于 2013-06-23T05:40:13.117 回答
1

你可以用一小段javascript来做到这一点:

<script type="text/javascript" language="JavaScript">location.href = 'otherpage.php';</script>

当然,这取决于启用 JavaScript 的人。

显然,要设置延迟,您可以使用 setTimeout 之类的方法:

<script type="text/javascript" language="JavaScript">
    setTimeout(function () {
                      location.href = 'stackoverflowhelp.php'; 
               }, 5000);
</script>
于 2012-06-22T10:34:50.557 回答
1

我认为最好的方法就是header("Refresh: 10;url=../index.php"); 像我所做的那样。

于 2013-10-06T11:47:26.740 回答
-1

https://codingislove.com/redirect-pages-php/

查看上面的文章,他们清楚地解释了如何通过设置时间在 PHP 中重定向页面。

未设置时间的重定向代码: header('location:URL ADDRESS');

设置三秒时间的重定向代码: header('refresh:3; url=URL ADDRESS');

于 2017-06-26T16:16:25.667 回答