我在我的网站上销售数码产品,我想设置某种页面保护。我的客户通过PayPal付款。我在PayPal结账的“提交”页面上有一个链接,并设置了我的结帐以重定向到“信息”页面。信息页面是我想要保护的。
这是我到目前为止的代码,但由于某些原因它不起作用,我不断收到“其他”声明......
<div id="info">
<ul>
<li>
<?php
if ( $_SERVER['HTTP_REFERER'] == "https://www.paypal.com/" ){
echo 'information...';
}else{
echo 'You need to pay first...';
}
?>
</li>
</ul>
</div>
有人看到我做错了吗?或者有更好的选择?
谢谢!
答案 0 :(得分:3)
$_SERVER['HTTP_REFERER']
很容易被任何人伪造。你的安全有多重要?如果在没有付费的情况下没有人访问该页面至关重要,那么不要依赖于HTTP_REFERER。
我很长时间没有使用过PayPal,但是当我这么做时,他们有一个用于验证付款的回调网址。数据流应如下所示
Your Server Paypal User submits payment form <-----------Paypal sends transaction information to your callback url You send the information back-----------------------------------> <---------Paypal sends back confirmation that they sent you that data (The data wasn't faked)
现在您查看交易信息的内容。如果用户付款,您将该记录存储在某种数据库中,以便您可以在将来的任何时间验证他们的付款。
<强>更新强>
以下是来自Paypal的PHP代码示例,可帮助您入门:https://cms.paypal.com/cms_content/US/en_US/files/developer/IPN_PHP_41.txt
该页面成为回调/通知页面。您不要在要保护的页面上放置任何代码。相反,当您在该页面上验证付款后,您将信息存储在数据库中,然后检查您正在保护的页面上是否验证了付款。
答案 1 :(得分:3)
使用PayPal的IPN来处理回调。毫无疑问,这将确认用户购买。 https://www.paypal.com/ipn
答案 2 :(得分:0)
正如一些人所评论的那样,依赖HTTP_REFERER远非安全
然而,要获得你想要做的工作 我会将你的代码改为这样的这将检测引荐来源是否包含“https://www.paypal.com/”而不是==
if (strpos($_SERVER['HTTP_REFERER'], "https://www.paypal.com/") !== FALSE)) {
答案 3 :(得分:0)
使用PayPal时,有多种方法可以处理购买商品。我建议使用回调选项。您指定将处理paypal回调数据的特定URL。在该URL中,您按照PayPal开发文档中的描述进行数据验证。在这种情况下,当客户被重定向回您的页面时,您所做的是在数据库中查找以查看购买的状态。如果尚未收到回调数据,则等待并重新检查。一旦您收到来自PayPal的回叫并且您明确知道付款是否发生,那么基于此,您应该授予您的客户访问权限,或者不是。
使用Referrer是很糟糕的,因为很多客户都被禁用了这个东西。此外,这可以很容易地改变,你的“受保护”区域将更容易访问。
此致 学家
答案 4 :(得分:0)
<?
$ref=$_SERVER['HTTP_REFERER'];
if (strpos($ref,'https://paypal.com') !== false) {
echo 'ok';
}else{
echo 'error';
}
?>