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