【问题标题】:Get the redirecting URL获取重定向 URL
【发布时间】:2013-09-07 22:23:56
【问题描述】:

我使用以下代码重定向到 PHP 中的 URL:

header('Location: http://site.com/target.php');

如何获取重定向到目标的 URL?我试过这段代码,但它不起作用:

echo $_SERVER["HTTP_REFERER"];

谢谢

【问题讨论】:

标签: php url redirect


【解决方案1】:

试试这个:

<?php echo "http://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; ?>

【讨论】:

  • 只显示当前页面的 URL,而不是引用页面。
  • @AdrianWragg 我知道这显示了当前页面的 URL。OP 已经回应了代码,这就是为什么我也回应了它。
  • @AdrianWragg 他已经有了引用页面的 url 并且需要当前 url 并且两者都可以在同一个站点的会话中使用。
【解决方案2】:

Sumit 的代码为您提供了当前 URL,您可以使用 session 来使用它:

$current_url="http://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
$_SESSION['url']=$current_url;
header('Location: http://site.com/target.php');

获取页面上的 URL:

echo $_SESSION['url'];

【讨论】:

  • 如果您重定向到另一个站点,会话对象将不再存在。这仅适用于内部重定向。
  • @AdrianWragg 是的,你是对的,我的解决方案仅适用于同一个域或同一个站点。
【解决方案3】:

您不能依赖 REFERER 标头,因为某些浏览器不会将其作为安全预防措施发送。

如果您需要知道他们最初请求的 URL,您可以将其作为查询参数传递到 Location URL 中。或者,您可以将其存储在服务器上的数据库中,并将密钥作为查询字符串的一部分传递到数据库中,或者类似地将其存储在服务器上的会话中,并将会话 ID 作为查询字符串的一部分传递。

如果你能准确地解释你想要做什么,你可能会得到一个更有用的答案。为什么你需要知道他们来自哪个地址,为什么你需要重定向到不同的地址?另外,这两个地址是否在同一个网站上(即同一个域名)?

【讨论】:

    【解决方案4】:
    <?php echo $_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF'] ; ?>
    

    这个链接真的会帮助你 $_SERVER

    【讨论】:

      【解决方案5】:

      您每次访问页面时都会存储在$_SESSION 中,因此每当您需要上一页的值时都可以轻松查看。

      【讨论】:

      • 为什么在您访问我的网站之前有人知道您在哪里?在那种情况下它不起作用?是的,不是。但为什么要这样做呢?如果你在餐馆买食物,他们可能会对你吃什么感兴趣。但他们为什么要知道你以前在哪里吃过什么?这不叫间谍吗?这不应该是一件坏事吗?那么,如果是,那我们为什么认为不支持一件坏事是个问题呢?
      • @Lajor “为什么应该这样工作”......为什么不问 OP,他是想要解决方案的人。不是我。
      • 操作者从未指定他要跟踪外国页面。你在假设。
      • “为什么不问 OP,他是想要解决方案的人。”没有指定在该解决方案中包含外来页面。这是一个假设。
      • 很抱歉,您似乎难以理解我的简单评论。不幸的是,我既没有时间也没有蜡笔进一步解释它。
      猜你喜欢
      • 1970-01-01
      • 2013-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-02
      • 1970-01-01
      • 2011-03-22
      • 2015-07-09
      相关资源
      最近更新 更多