2012-02-17 116 views
0

一个页面下面是我在哪里:拒绝访问基于Referrel

  1. 我有一个WordPress插件,允许订阅到位,并使用贝宝IPN。该插件根据用户是否拥有有效订阅而拒绝访问某些页面。

  2. 我有另一个插件,允许一次性支付不同的服务。这将用户带到PayPal,并将其重定向到他们可以上传视频的页面。这些视频只有付款后上传,但任何人都可以通过直接的URL访问页面...

如何限制访问此上传页面?

回答

1

所以我不确定你是否想用JavaScript或PHP来做到这一点... PHP会更可靠(人们可以关闭JavaScript),但最终,如果用户可以更改引用者,真的很想绕过你采取的任何措施,所以在实施时要记住这一点。

最好的办法就是让if语句检查引用链接,如果它不是可接受的引用链接,只是重定向它们。

<SCRIPT LANGUAGE=JAVASCRIPT TYPE="TEXT/JAVASCRIPT"> 
<!-- Hide script from old browsers 
if (document.referrer != '[Only Allowed Referrer URL]') 
{ 
    window.location = "http://not.allowed.to.view.site"; 
} 
//-- Stop hiding script --> 
</SCRIPT> 

<?php 

if ($_SERVER["HTTP_REFERER"] != "[Only Allowed Referrer URL"]) 
{ 
    header('Location: http://not.allowed.to.view.site') ; 
} 

?> 

我还没有完全测试上面的代码,但这样的事情是你想要的。基本上,如果它不是来自“允许的”引用者,则重定向到错误页面。

同样,使用引用URL来拒绝或授予对页面的访问权限并不可靠,但如果你想这样做,那么类似的东西就是你需要的。也要警惕诸如URL有时可能有“www”之类的内容。在一开始,有时可能不会。您的if语句中可能会考虑URL的变体。

1

我假设你正在使用这样的事情在你的PayPal形式:

<input type="hidden" name="return" value="http://mydomain.com/verify.php"> 

如果是这样,在这个页面:http://mydomain.com/verify.php您必须确认该交易是否是正确的。 Instant Payment Notification - Code Samples东西,对吗?那么,如果验证无效,则拒绝所有进一步处理(上传视频)。

否则您重定向到让我们说http://mydomain.com/upload.php

header('Location: http://mydomain.com/upload.php') ; 

现在,在上传页面你把在顶部:

if ($_SERVER['HTTP_REFERER'] != 'http://mydomain.com/verify.php') 
{ 
    die('get out of here!'); 
}