Php HTTP#u referer用于多个URL';s

Php HTTP#u referer用于多个URL';s,php,http-referer,Php,Http Referer,我得到了这个“HTTP_referer-script”,它在进入网站时检查访问者是否来自某个URL(受密码保护)。我的问题是,它似乎只有在访问者来自绝对正确的URL时才起作用。即: 如果用户来自:它可以正常工作,但如果用户来自,它将无法工作 在这种情况下,是否有必要向HTTP_referer添加第二个URL?该URL是同一个域,但也包含“www” 满足于此 非常感谢! /a将与URL数组结合使用: if (!in_array($referrer, array('http://mydomain

我得到了这个“HTTP_referer-script”,它在进入网站时检查访问者是否来自某个URL(受密码保护)。我的问题是,它似乎只有在访问者来自绝对正确的URL时才起作用。即:

如果用户来自:它可以正常工作,但如果用户来自,它将无法工作

在这种情况下,是否有必要向HTTP_referer添加第二个URL?该URL是同一个域,但也包含“www”


满足于此
非常感谢!
/a

与URL数组结合使用:

if (!in_array($referrer, array('http://mydomain.com/', 'http://www.mydomain.com/'))) { 
    die("You do not have access to this site."); 
} 

把两个if语句放在下面

 <?php 
$referrer = $_SERVER['HTTP_REFERER']; 

if ($referrer != 'http://mydomain.com/') { 
    die("You do not have access to this site."); 
} 
if ($referrer != 'http://www.mydomain.com/') { 
    die("You do not have access to this site."); 
} 


// put your page code here 

?>
<h1>Content here</h1> 

满足于此

服务器['HTTP\u REFERER']
的内容来自客户端发送到Web服务器的请求。首先,重要的是要认识到这些信息绝对不可信。这很容易被客户伪造

话虽如此。您可能只需要检查域是否是
$\u服务器['HTTP\u REFERER']
字符串的一部分。因为在这种情况下也不起作用

因此,通过您的示例,使用以下内容:

<?php 

if ( strstr($_SERVER['HTTP_REFERER'], 'mydomain.com') ) { 
    die("You do not have access to this site."); 
} 

// put your page code here 

?>
<h1>Content here</h1> 

满足于此
这段代码只是检查“mydomain.com”是否是$\u服务器['HTTP\u REFERER']内容的一部分


请务必意识到这也意味着:因为referer也会匹配,但您不太可能遇到这种情况(这可能也不重要)

为什么不在条件语句中添加第二个URL:
if($referer!='http://mydomain.com/“| |$推荐人!=”http://www.mydomain.com/')
您可能想试试
|
操作符:像这样?如果($referer!=“| |$referer!=”)死亡(“你不能通过!”);似乎不起作用,现在它不会说“你不……”或“这里的内容……”。。。隐马尔可夫模型!不要在| |之前使用分号(;)。另外,在您的示例中,两个URL都是相同的,这没有任何意义。请记住,您的代码不是安全检查,因为访问者可能会伪造其推荐人。您好,谢谢您的详细回答!不幸的是,它不起作用。url是否应该是像“”这样的完整url?这可能与此页面前面使用的密码页面有关吗?是的!成功了!非常感谢!我只需将URL从index.php更改为auth.php(页面检查密码),然后一切都像一个符咒一样工作。。。谢谢
<?php 

if ( strstr($_SERVER['HTTP_REFERER'], 'mydomain.com') ) { 
    die("You do not have access to this site."); 
} 

// put your page code here 

?>
<h1>Content here</h1> 
$allowed = array("hello.com","example2.com");

foreach ($allowed as $site) {
    if(!preg_match("#$site#", $url))
         die("You do not have access to this site."); 
    else
        break;
}