【问题标题】:php refresh current page?php刷新当前页面?
【发布时间】:2011-05-12 09:21:39
【问题描述】:

我有一个页面,

如果设置了变量(在会话中) 它会做一个动作, 然后它会取消会话。

现在它必须自我刷新。

这就是我卡住的地方。

有没有办法获取当前页面的确切网址?

或者有什么功能可以做到这一点?

所以header('location: ???');

【问题讨论】:

    标签: php redirect header


    【解决方案1】:
    header('Location: '.$_SERVER['REQUEST_URI']);
    

    【讨论】:

    • $_SERVER['REQUEST_URI'] 是服务器生成的变量。只有 GET、POST、a 和 COOKIES 容易受到用户干扰。 (除了“Referrer”等标题)
    • 那些服务器生成的变量是可以修改的,所以你还是应该考虑清理它们。
    • 那些认为应该对其进行消毒的人并不真正理解他们在说什么。 REQUEST_URI 包含您当前所在的 URL,因此,如果访问此 URL 存在任何安全问题,则危害已经造成。重定向到您已经在的位置没有安全隐患。
    • @RobertM。不,它会将您重定向到当前网址。如前所述,损害已经造成。
    • 在重新加载标头后放置一个 die() 以防止在该行下方执行代码。
    【解决方案2】:

    PHP刷新当前页面

    使用 PHP 代码:

    <?php
    $secondsWait = 1;
    header("Refresh:$secondsWait");
    echo date('Y-m-d H:i:s');
    ?>
    

    注意:请记住,header() 必须在发送任何实际输出之前调用,无论是通过普通 HTML 标记、文件中的空白行还是通过 PHP。

    如果你发送任何输出,你可以使用javascript:

    <?php
    echo date('Y-m-d H:i:s');
    echo '<script type="text/javascript">location.reload(true);</script>';
    ?>
    

    当这个方法接收一个真值作为参数时,它会导致页面总是从服务器重新加载。如果为 false 或未指定,浏览器可能会从其缓存中重新加载页面。

    或者您可以显式使用“元刷新”(使用纯 html):

    <?php
    $secondsWait = 1;
    echo date('Y-m-d H:i:s');
    echo '<meta http-equiv="refresh" content="'.$secondsWait.'">';
    ?>
    

    问候和好的代码,

    【讨论】:

      【解决方案3】:

      另一个优雅的是

      header("Location: http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]");
      exit;
      

      【讨论】:

        【解决方案4】:
        header('Location: '.$_SERVER['PHP_SELF']);  
        

        也可以

        【讨论】:

        • 这只有在 URL 中显示文件名时才有效。所以,URL 重写肯定行不通。
        【解决方案5】:

        $_SERVER['REQUEST_URI'] 应该可以工作。

        【讨论】:

          猜你喜欢
          • 2014-06-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-12-01
          • 2011-01-07
          • 1970-01-01
          • 2020-04-03
          • 2018-09-15
          相关资源
          最近更新 更多