$_SERVER[\'HTTP_REFERER\']
获取您需要的所有信息,而不仅仅是域-因此,您只需深入了解您已经获得的数据。
我建议只设置一个变量,以确保不会将错误粘贴到第二个变量中-可以通过添加“www.”来检查www版本。
您当前的代码会将页面显示给任何直接访问该页面而没有引用者(即通过书签或搜索引擎结果)的人,听起来您只希望成功完成测试的人能够查看页面,因此我还删除了在引用者为空时将域设置为正确域的部分。
您可能需要对此进行一些调整,但它应该为您指明正确的方向:
<?php
// set the non-www allowed domain, path, and title
$allowedDomain = \'thequizhost.com\';
$allowedPath = \'/the-quizzes/quizzing.php\'
$allowedQuery = \'our-specific-quiz-we-need-to-echek-for\'
// grab the HTTP referer using WP\'s built-in function
$referer = wp_get_referer();
// if referer is not empty
if (!empty($referer)) {
// split url to check its pieces
$refererData = parse_url($referer);
// check domain, both non-www and www
if($refererData[\'host\'] == $allowedUrl || $refererData[\'host\'] == \'www.\'.$allowedUrl) {
// check the path
if($refererData[\'path\'] == $allowedPath) {
// parse the query string
parse_str($refererData[\'query\'], $queryString);
// check just the "title" variable
if($queryString[\'title\'] == $allowedQuery) {
// now we know they really completed the quiz
$showForm = true;
}
}
}
}
// if $showForm is true, they\'ve been verified and can see the form
if($showForm == true) {
do_shortcode("[signup_form id=\'2\']");
// they didn\'t come from the right place, so don\'t show the form
} else {
// redirect to homepage, or wherever you like
wp_safe_redirect(home_url()); exit;
}
?>
如果您认为访问者很有可能在不参加测验的情况下尝试点击页面,而不是重定向,您可以显示其他内容,大意是“感谢您的兴趣。请参加测验(链接此处)以启用注册”