2012-05-03 46 views
11

嗨,我试图让参照网址,但是当游客从贝宝获取来源网址 - 观众来自贝宝未来(HTTPS)

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

来到现场它不工作,有一个简单的如果访问者在网站上登陆PayPal,如何获得PayPal网址?

编辑和澄清: 我不希望有在PayPal网站的任何特殊设置(包括但不限于:IPN,设置返回URL,支付数据传输或贝宝的任何其它特殊设置网站)我在寻找的是当访问者从PayPal来到网站时获取URL referer,交易状态(如果有的话)。

正如从手动

$ _SERVER指出由Bob是含阵列的信息,如标题,路径, 和脚本的位置。该数组中的>条目由 网络服务器创建。不能保证每个网络>服务器都会提供 任何这些;服务器可能会省略一些,或者在此提供其他未列出的 。

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

+4

为什么你需要引用者?您可以通过PayPal设置返回网址。 – Devator

+2

嗯,这不是我要求的或者我需要的...... – user983248

+3

我完全意识到这不是你要求的,但是如果你告诉我们你想要达到的目标,我们可能会想到你没有做的事情并首先解决您的问题。 – Devator

回答

27

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

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

客户不应该包含在(非安全) HTTP请求一个Referer标头字段,如果引用页用安全 协议传送。

所以获得推荐人的唯一方法就是在您的网站上使用HTTPS。

+0

也许通过HTTPS托管自己的网站有帮助吗? – hakre

+0

@hakre是的,这将起作用 – stewe

+0

如果您的网站使用HTTPS,那么这是否意味着如果您的网站也使用HTTPS(即使该网址包含'?u = password')?例如:http://stackoverflow.com/questions/499591/are-https-urls-encrypted#comment37812273_17905738 – trusktr

3

PHP.net引用:

$ _SERVER是包含信息,诸如标题,路径和脚本位置的阵列。该数组中的>条目由Web服务器创建。不能保证每个Web>服务器都会提供这些中的任何一个;服务器可能会省略一些,或者提供这里没有列出的其他人。

+0

那么,没有解决方法? – user983248

+0

@ user983248:解决方法是检查您的服务器配置并确保您正在查找的变量已设置。然而,如果引用者缺失,仅仅指责服务器是不够的,因为如果浏览器不发送它,服务器将不会拥有它(这是特别正常的,因为如果前一个站点是服务器,浏览器通常不发送该信息通过HTTPS这是贝宝的情况)。 – hakre

9

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

+0

是的,我知道,但仍然不是我所需要的 – user983248

+1

+1,因为这对于引用者来说这是一个* *更好的主意,而不是*任何*。 –

2

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

这不是你所问的,但可能是一个可以接受的解决方法。

4

引用者不幸被客户端设置,一些浏览器(或插件)允许用户编辑引用者发送到服务器的内容。信任用户发送的“关键”信息(在我的猜测中)绝不是一个好主意。然而,这是你有关用户来自哪里的唯一信息(如果你决定不使用paypal可以提供的)。

1

可以在JavaScript中使用document.referrer并通过AJAX或东西,如果你需要

+1

如果HTTPS转换为非HTTPS重定向,则此变量不会存在。 – Gajus

+0

是吗?谢谢.. – Stranger

0

在此寻找从不同persepective发送到服务器:如果您正在尝试寻找outwhere他们来自他们去到PayPal前,并且您正在将网站发送给PayPal(或者您可以让他们通过您的网站重定向到PayPal),在重定向他们之前在您的网站上设置一个Cookie,然后在他们返回时读取Cookie。

对不起,如果再次不是你所需要的,但只是检查你已经考虑过了(因为我也不认为你会与推荐人一起赢)。