仅在自己的网站推荐时才打开页面

时间:2013-11-21 16:45:51

标签: php html

是否有某种方式可以打开特定页面,只要它是从同一网站上的某个地方引用的,如果输入了直接URL则不会打开?我希望我的测验网站的结果页面能够以这种方式工作。有帮助吗?请询问所需的更多细节或解释。我更喜欢php中的功能。

2 个答案:

答案 0 :(得分:2)

您可以访问$_SERVER["HTTP_REFERER"];。但是,你当然不能依赖它,因为它很容易被欺骗。最好的选择是在页面A上设置一个会话变量,这是访问页面B所需要的。非常基本的例子:

页-a.php只会

session_start();
$_SESSION['page_a_visited'] = true;
//Display HTML and link to page-b.php, etc.

页-b.php

session_start();
if(!isset($_SESSION['page_a_visited'])){
    //Directly accessing the page without having visited Page A.
    //Or session has expired.
    exit;
}

回应你的评论。如果您的测验需要强制用户从问题1导航到问题10:

而不是$_SESSION['page_a_visited'] = true;,请使用类似$_SESSION['page_a_visited'] = $questionId;的内容当问题2出现时,请确保$_SESSION['page_a_visited']存在并且等于1.当问题出现时3,确保$_SESSION['page_a_visited']存在并且它等于2.依此类推。

答案 1 :(得分:0)

此函数检查引用您页面的页面是否位于同一“目录”和服务器空间中。我在自己的工作中使用它,如果它不能直接适用,你可能会得到一些想法。

function external_referral()
{
    if( empty( $_SERVER["HTTP_REFERER"] ) )
    {
        return true;
    }
    else
    {
        $url = parse_url( $_SERVER["HTTP_REFERER"] );

        return ( $_SERVER["HTTP_HOST"] != $url["host"] || dirname( $_SERVER["REQUEST_URI"] ) != dirname( $url["path"] ) );
    }
}