我在我的网站上销售数字产品,我想设置某种页面保护。我的客户通过PayPal付款。我在“提交”页面上有一个链接到PayPal结账,并将我的结账设置为重定向到“信息”页面。信息页面是我想要保护的。
这是我目前为止的代码,但由于某种原因它不起作用,我一直得到“else”语句...
<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>
有没有人知道我做错了什么?或者有更好的选择?
5条答案
按热度按时间brvekthn1#
$_SERVER['HTTP_REFERER']
很容易被任何人伪造。您的安全性有多重要?如果没有人在不付费的情况下访问页面至关重要,那么不要依赖HTTP_REFERER。我已经很久没有使用paypal了,但是当我使用的时候,他们有一个回调url,你可以用它来验证支付。
现在检查交易信息,如果用户进行了支付,则将该记录存储在某种数据库中,以便将来可以随时验证他们是否支付。
更新
下面是Paypal的PHP代码示例,可以帮助您入门:https://cms.paypal.com/cms_content/US/en_US/files/developer/IPN_PHP_41.txt
该页面将成为回调/通知页面。您不会将任何代码放在要保护的页面上。相反,当在该页面上验证付款时,您将信息存储在数据库中,然后检查您正在保护的页面上的付款是否已验证。
rqenqsqc2#
使用PayPal的IPN来处理回调。这将毫无疑问地确认用户购买了。https://www.paypal.com/ipn
ct3nt3jp3#
正如一些人评论的那样,依赖HTTP_REFEER远远不够安全
然而,为了让你正在尝试做的工作,我会改变你的代码,像这样
这将检测到referrer是否包含“https://www.paypal.com/”而不是== to
cl25kdpy4#
当与PayPal合作时,有许多方法来处理购买商品.我建议使用回调选项.您指定将处理贝宝回调数据的特定URL.在该URL中,您按照PayPal开发文档中所述进行数据验证.在这种情况下,当客户被重定向回您的页面时,你所做的是你在db中查找查看购买的状态。如果还没有收到回调数据,你等待,并重新检查。一旦你收到了来自PayPal的回调,你明确知道是否发生了付款,然后根据这一点,你应该给予你的客户访问或没有。
使用Referrer是不好的,因为许多客户已经看到这个东西禁用。而且,这可以很容易地改变和您的“保护”区域将更容易访问。
问候J
z6psavjg5#