嗨,我正在尝试获取引荐来源网址,但是当访问者从PayPal访问该网站时,它不起作用
$ref = $_SERVER['HTTP_REFERER'];
echo $ref;
如果访问者登陆网站,有没有一种简单的方法可以获取PayPal PayPal网址?
编辑和澄清:我不希望在PayPal网站上有任何特殊设置(包括但不限于:IPN,设置返回URL,付款数据传输或PayPal网站上的任何其他特殊设置(我正在寻找的只是在访问者从PayPal访问该网站时获得URL引用,关于交易状态(如果有的话(。
正如鲍勃从手册中指出的那样
$_SERVER 是一个数组,包含标头、路径、 和脚本位置。此数组中的>条目由 网页服务器。不能保证每个网络>服务器都会提供 其中任何一个;服务器可能会省略某些内容,或提供未列出的其他内容 这里。
所以剩下的唯一问题是 - 在不PayPal网站上设置某些东西的情况下,是否有任何解决方法?
如果您的网站使用 HTTP(不是 HTTPS(,而PayPal使用 HTTPS,则不会发送引荐来源网址!
HTTP RFC - 15.1.3 在 URI 的状态中编码敏感信息:
客户端不应在(不安全(中包含引用标头字段HTTP 请求(如果引用页面是使用安全传输的(协议。
因此,获取引荐来源网址的唯一方法是在您的网站上使用 HTTPS。
您可以检查 IPN。当事务受到影响时,它会发送通知。
网址 : https://www.paypal.com/ipn
不幸的是,引用器是由客户端设置的,并且某些浏览器(或插件(允许用户编辑发送到服务器的引用器。信任用户发送的"关键"(我猜在您的情况下(信息从来都不是一个好主意。但是,这是您拥有的有关用户来自何处的唯一信息(如果您决定不使用PayPal可以提供的内容(。
自 PHP.net:
$_SERVER 是一个包含标头、路径和脚本位置等信息的数组。此数组中的>条目由 Web 服务器创建。不能保证每个网络>服务器都会提供其中任何一个;服务器可能会省略某些内容,或提供此处未列出的其他内容。
启发(在评论中(。正如鲍勃所说,您不能依赖服务器发送的信息。我要做的是创建一个用户在付款前必须访问的页面,设置cookie(或会话(,将用户重定向到PayPal网站。当用户返回您的网站(通过PayPal、某些链接或手动(时,您知道此人点击了"支付"按钮(在您设置 cookie 或会话时(并执行您想要的操作。
这不是您要求的,但可能是一种可接受的解决方法。
你可以在javascript中使用document.referrer
,如果需要,可以通过ajax或其他东西将其发送到服务器
从不同的角度来看:如果你正在尝试找出他们在PayPal之前来自哪里,并且你的网站正在将他们发送到PayPal(或者你可以让他们在去PayPal的路上通过你的网站重定向(,在重定向他们之前在你的网站上设置一个cookie,然后在他们返回时阅读cookie。
对不起,如果再次不是你需要的,但只是检查你已经考虑过它(因为我也不认为你会赢推荐人(。