2011-04-25 39 views
2

是否有一个简单的脚本,只允许来自我选择的网站的访问者访问?PHP脚本只允许来自某个域的流量?

+2

@布赖恩但绝对没有错,要求对堆栈溢出这个问题。 (这是一个非常懒惰的问题,说。 – 2011-04-25 15:59:29

+0

@middaparka我同意,但这个问题有相当广泛的网络上的其他来源的覆盖面,所以我没有看到在这里消耗更多的资源的一点。因此,我的建议。 – 2011-04-25 16:01:05

+2

@Brian Driscoll:请停止告诉人们谷歌。这个网站是谷歌最好的搜索结果之一,如果你知道它,只是链接到一个页面,否则这是没有用的。 *(假设“最喜欢的搜索引擎”是谷歌) – 2011-04-25 16:03:43

回答

1

您可以使用$_SERVER['http_referer']但这可以很容易伪造。

0

如果您获取了他们的引荐来源信息,您可以根据已接受的网站来源列表对其进行检查,并将其重定向到他们来自的网站(如果您不需要)。

$_SERVER["HTTP_REFERER"] 
6

检查引用是完成这一任务的最可靠的方法,但你应该知道,并不是所有的用户代理(也称为浏览器)发送完整的或正确的引用。

事情是这样的:

$target_site = 'http://www.google.com'; 
if (isset($_SERVER['HTTP_REFERER']) && preg_match("/$target_site/",$_SERVER['HTTP_REFERER'])) { 
    // do something with people from google.com 
} else { 
    // do something else with everyone else 
} 

了解更多关于它:http://www.electrictoolbox.com/php-http-referer-variable/

PHP手册上$_SERVER超全局:http://php.net/manual/en/reserved.variables.server.php

+0

为了增加您的第一点,我曾因为某些原因将Chrome返回'favicon.ico'作为引用者。 – 2011-04-25 16:10:40

+0

我将如何修改该代码,将好用户重定向到我的网站,并将不允许的用户重定向到错误页面? – don3434 2011-04-25 16:22:47

+0

使用php命令'header'。例如:'header('location:http://www.gotothissite.com');'。请参阅手册:http://php.net/manual/en/function.header.php – 2011-04-25 16:29:17