【问题标题】:Get referrer URL - visitors coming from Paypal (HTTPS)获取引荐来源网址 - 来自 Paypal (HTTPS) 的访问者
【发布时间】:2012-05-12 22:16:38
【问题描述】:

您好,我正在尝试获取引荐来源网址,但是当访问者从 Paypal 访问该网站时它不起作用

$ref = $_SERVER['HTTP_REFERER'];
echo $ref;

如果访问者登陆来自 Paypal 的网站,是否有一种简单的方法来获取 paypal url?

编辑和澄清: 我不希望在 Paypal 网站上进行任何特殊设置(包括但不限于:IPN、设置返回 URL、支付数据传输或 Paypal 网站上的任何其他特殊设置)访问者从 Paypal 访问网站时的 URL 引用,无论交易状态(如果有的话)。

正如 Bob 在手册中指出的那样

$_SERVER 是一个包含诸如标题、路径、 和脚本位置。该数组中的 > 条目由 网络服务器。不能保证每个 web >server 都会提供 任何这些;服务器可能会省略一些,或提供其他未列出的 在这里。

所以剩下的唯一问题是 - 如果不在贝宝网站上设置一些东西,是否有任何解决方法?

【问题讨论】:

  • 为什么需要referer?您可以通过 PayPal 设置退货网址。
  • 嗯,这不是我的要求或我需要的......
  • 我完全知道这不是您所要求的,但是如果您告诉我们您想要达到的目标,我们可能会想到您没有想到的事情并首先解决您的问题。
  • @Devator:谢谢,我不是想烦人,我知道 Paypal IPN 以及如何通过 Paypal 设置返回 URL,我的想法是获取推荐人,如果它Paypal 是否执行脚本,而不管交易的状态(待定、已取消等)。正如 Bob 从 PHP 手册中指出的那样,不能保证每个网站都会提供我正在寻找的信息。
  • 替代 Devator 的回答,您可以启用 Payment Data Transfer,验证从 Paypal 发送的数据以确保其准确无误。

标签: php paypal http-referer


【解决方案1】:

如果您的网站使用 HTTP(不是 HTTPS)而 PayPal 使用 HTTPS,则不会发送推荐人!

HTTP RFC - 15.1.3 Encoding Sensitive Information in URI's 状态:

客户端不应该在(非安全)中包含Referer头字段 HTTP 请求,如果引用页面是使用安全传输的 协议。

因此,获取 Referrer 的唯一方法是在您的网站上使用 HTTPS。

【讨论】:

  • 也许通过 HTTPS 托管自己的网站有帮助?
  • 如果您的网站使用 HTTPS,这是否意味着您可以获得链接到您网站的任何其他网站的引荐来源网址,如果他们也使用 HTTPS(即使该网址包含?u=username&pw=password)?例如:stackoverflow.com/questions/499591/…
  • 对不起,但我已经尝试过并将我的网站更改为 HTTPS,但当它来自 Paypal 时仍然无法获得推荐人。只要服务器决定是否包含推荐人信息,我相信这不是解决方案,因为 Paypal 没有发送该信息。
【解决方案2】:

您可以检查 IPN。它会在交易受到影响时发送通知。
网址:https://www.paypal.com/ipn

【讨论】:

  • 是的,我知道,但仍然不是我需要的
  • +1 因为这是一个很多的主意,比对推荐人做任何事情要好。
【解决方案3】:

不幸的是,referer 是由客户端设置的,并且某些浏览器(或插件)允许用户编辑发送到服务器的 referer。相信用户发送的“关键”(我猜是你的情况)信息从来都不是一个好主意。然而,这是您掌握的关于用户来自何处的唯一信息(如果您决定不使用 paypal 可以提供的服务)。

【讨论】:

    【解决方案4】:

    引用自PHP.net

    $_SERVER 是一个包含诸如标题、路径和脚本位置等信息的数组。该数组中的 > 条目由 Web 服务器创建。无法保证每个 Web > 服务器都会提供其中的任何一个;服务器可能会省略一些,或提供此处未列出的其他内容。

    【讨论】:

    • @user983248:解决方法是检查您的服务器配置并确保设置了您要查找的变量。但是,如果没有引荐来源网址,仅仅责怪服务器是不够的,因为如果浏览器不发送它,服务器就不会有它(这是特别正常的,因为如果以前的站点是服务器,浏览器通常不会发送该信息通过 HTTPS,这是 paypal 的情况)。
    【解决方案5】:

    感谢您的启发(在评论中)。正如 Bob 所说,您不能依赖服务器发送的信息。我要做的是创建一个用户在付款前必须访问的页面,设置一个 cookie(或会话),将用户重定向到 PayPal 网站。当用户返回您的网站(通过 PayPal、一些链接或手动)时,您知道该人点击了“支付”按钮(在您设置 cookie 或会话时)并执行了您想要的操作。

    这不是您要求的,但可能是可接受的解决方法。

    【讨论】:

      【解决方案6】:

      您可以在 javascript 中使用document.referrer,并根据需要通过 ajax 或其他方式将其发送到服务器

      【讨论】:

      • 如果进行了 HTTPS 到非 HTTPS 重定向,则该变量将不存在。
      【解决方案7】:

      从不同的角度来看:如果您想在他们转到 PayPal 之前找出他们来自哪里,并且您的网站正在将他们发送到 PayPal(或者您可以让他们通过您的网站重定向到方式到 PayPal),在您重定向之前在您的网站上设置一个 cookie,然后在它们返回时读取 cookie。

      很抱歉,如果再次不是您需要的,只是检查一下您是否考虑过它(因为我也不认为您会在推荐人的帮助下获胜)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多