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