11

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

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

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

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

正如鲍勃从手册中指出的那样

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

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

4

7 回答 7

27

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

HTTP RFC - 15.1.3 在 URI 的状态下编码敏感信息:

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

因此,获得推荐人的唯一方法是在您的网站上使用 HTTPS。

于 2012-05-11T10:46:22.503 回答
9

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

于 2012-05-03T12:21:35.657 回答
4

不幸的是,引用者是由客户端设置的,一些浏览器(或插件)允许用户编辑发送到服务器的引用者。相信用户发送的“关键”(我猜是你的情况)信息从来都不是一个好主意。然而,这是您拥有的关于用户来自哪里的唯一信息(如果您决定不使用贝宝可以提供的服务)。

于 2012-05-12T00:14:38.107 回答
3

引用自PHP.net

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

于 2012-05-03T11:54:45.483 回答
2

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

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

于 2012-05-03T17:48:04.737 回答
1

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

于 2012-05-15T11:20:53.810 回答
0

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

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

于 2012-05-17T10:05:27.963 回答