【问题标题】:How to get refering URL when redirected from some page to another page从某个页面重定向到另一个页面时如何获取引用 URL
【发布时间】:2013-07-20 22:38:46
【问题描述】:

我正在使用 php header 从几个页面重定向到 dev.php

<?php header(Location: dev.php); ?>

我想知道我是从哪里被重定向到这里的。

我试过了

<?php
print "You entered using a link on ".$_SERVER["HTTP_REFERER"];
?>

但只有当您使用 &lt;a href="dev.php"&gt;Go to Developer Page&lt;/a&gt; 访问 dev.php 时,它才能像 $_SERVER["HTTP_REFERER"]; 那样工作

那么我怎样才能获得引用 URL?

【问题讨论】:

    标签: php javascript html


    【解决方案1】:

    试试下面的方法。

    <?php header(Location: dev.php?referrer=$_SERVER[PHP_SELF]); ?>
    

    header('Referer: '.$_SERVER['PHP_SELF']);
    header(Location: dev.php);
    

    如果上述方法不起作用,您将不得不参加会议。

    【讨论】:

    • header('Referer: '.$_SERVER['PHP_SELF']); dosent 工作,我不能使用 dev.php 来获取变量
    • 检查更新的答案。它应该工作。在使用重定向之前设置标题。
    • 是的,我之前使用过更新的,首先我设置了header('Referer: '.$_SERVER['PHP_SELF']);,然后重定向
    • 如果上述方法不起作用,您将不得不参加会议
    • Referer 标头是请求级标头(请参阅RFC 1945 section 10.13),因此在响应中设置它无效。
    【解决方案2】:

    您可以在 GET 中传递变量:

    <?php header('Location: dev.php?backurl='.$_SERVER[PHP_SELF]); ?>
    

    然后这样取:

    $backurl=$_GET['backurl'];
    

    【讨论】:

      【解决方案3】:

      您需要手动将referer 添加到标题中:

      header("Referer: http://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']); // current page
      header("Location: dev.php");
      

      您也可以使用 CURL 来完成。在这里查看一个示例函数: PHP - Referer redirect script

      【讨论】:

      • 我为使用 CURL 的方法添加了一个链接。
      • Referer 标头是请求级标头(请参阅RFC 1945 section 10.13),因此在响应中设置它无效。
      【解决方案4】:
      $_SERVER["HTTP_REFERER"] = 'YOUR_URL';
      header('Location: dev.php');
      exit(0);
      

      【讨论】:

      • 这一项在 dev.php 中有效,我是 echo $_SERVER[PHP_SELF];,但它没有回显/打印任何内容 {blank}
      • dev.php 中,你必须得到HTTP_REFERER,而不是PHP_SELF。所以,请echo $_SERVER["HTTP_REFERER"]
      • 是的,对不起,我在回应 我只是误输入了评论
      【解决方案5】:

      referer 标头相当不可靠,有防病毒软件和防火墙可以完全过滤它。唯一可以安全依赖的就是 cookie 和会话。

      Cookie 存储在客户端,在浏览器中,因此可以被操纵,但如果您存储非关键信息,它们就足够了。

      如今的会话依赖于 cookie 作为启动它们的一种方式。随机生成的哈希存储在 cookie 中,相应的数据存储在链接到该哈希的服务器上。当客户端请求下一页时,将检索此数据。有关会话的更多信息,请阅读corresponding section of the PHP manual

      正如我所写的,现在会话依赖于 cookie,除非您意识到安全隐患,否则您不应该这样做。但是,您可以使用 URL 参数来传递会话 ID。

      附带说明:为了使用 cookie(以及与它们一起使用的会话),设置和最终 URL 必须位于同一域中。如果不是这种情况,您可以使用请求参数来传递信息。

      【讨论】:

        猜你喜欢
        • 2015-08-14
        • 2023-02-02
        • 1970-01-01
        • 2020-02-27
        • 2011-08-22
        • 1970-01-01
        • 2019-11-04
        • 2016-12-14
        • 1970-01-01
        相关资源
        最近更新 更多