添加多个引荐来源链接

时间:2014-08-19 03:24:43

标签: php

我保护页面不被访问,只能通过引荐页面访问它,这是我在登录页面上的代码

<?php 
// request file coming from test referrer
    if(stristr($_SERVER['HTTP_REFERER'],"http://aqsv.com/sites2/testreffer/tp1.php"))
{
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<h1>Test Landing Page 1</h1>
</body>
</html>
<?php
}
// redirect to redirect.php
else  {
header("Location: http://aqsv.com/sites2/testlander/redirect.php");
}
?>  

这是推荐人页面

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Test Refererrer 1</title>
</head>

<body>
<h1>Test Refererrer 2</h1>
<a href="http://aqsv.com/sites2/testlander/lp1.php">Link me to landing page1</a>
</body>
</html>

这项工作完全在单个引用页面上,我想要做的是有多个引用页面来访问页面,我是新来的PHP,真的没有任何想法这样做..我尝试添加http引用使用if其他像这样

<?php 
// request file coming from test referrer
if(stristr($_SERVER['HTTP_REFERER'],"http://aqsv.com/sites2/testreffer/tp1.php"));
elseif(stristr($_SERVER['HTTP_REFERER'],"http://aqsv.com/sites2/testreffer/tp2.php"))
        {
?>

但第二个链接不起作用。任何帮助将受到高度赞赏。谢谢

2 个答案:

答案 0 :(得分:0)

您可以使用包含所有有效引荐来源网址的数组。 E.g。

<?php
$valid_domains = array(
    'domain1',
    'domain2',
    'domain3'
);

// The checking for valid domain
if ( in_array($_SERVER['HTTP_REFERER'], $valid_domains) )
{
?>
Your HTML goes here....
<?php
}
?>

请参阅http://php.net/manual/en/function.in-array.php

希望这个想法会对你有所帮助。

答案 1 :(得分:0)

if/elseif...的语法是:

if (something) {
    body
} elseif (somethingelse) {
    body
}

但是body没有if,只有elseif,所以在这种情况下没有任何事情发生。

由于您希望所有测试使用相同的正文,因此您应该只使用一个if,其中多个条件由OR连接:

if (stristr($_SERVER['HTTP_REFERER'],"http://aqsv.com/sites2/testreffer/tp1.php") ||
    stristr($_SERVER['HTTP_REFERER'],"http://aqsv.com/sites2/testreffer/tp2.php")) {
    ...
}

另一种方法是将所有允许的引用放在一个数组中,然后执行:

if (in_array(strtolower($_SERVER['HTTP_REFERER']), $allowed_referers)) {
    ...
}

我使用strtolower()使其不区分大小写,就像您原来的测试一样。