下面是代码。
我将代码放在函数中。WordPress安装中的子主题的php。
如您所见,我已将其设置为挂钩到“init”函数中,无论访问者访问哪个页面,都会感觉到它是运行的最佳位置。这就是我的研究所说的。如果有更好的地方,请分享。
基本上,预期用途是代码应该允许来自谷歌的用户使用。com主机访问站点。如果是这种情况,它还会设置一个cookie,以便用户可以访问其他菜单项而无需重定向。
如果最初不是来自google主机,则会检查cookie,如果没有cookie,则会重定向回google。com(同样,谷歌只是一个占位符,无法发布实际主机。)
问题是:
如果访问者访问主页以外的任何其他页面,则主机变量是正确的,但在主页访问中,$主机变量为空或未设置。
$主机变量始终未设置或为空。这是因为引用站点在发送到我的站点之前,使用Javscript执行一些代码和重定向。我可以理解为什么它可能不是“google.com”,但它应该设置为正确的?这就是我对http\\U推荐人缺乏了解的原因,我需要帮助。我读到,检查http\\u referer有问题,可以通过代码等进行欺骗。我明白了,我的问题是,此时可以做些什么来获取$host变量中的某些内容,为什么只转到WordPress站点的主页时它是空的?
我需要一种方法来拒绝访问不是来自推荐网站的“非专业人士”。我不需要阻止黑客和程序员,我只需要阻止人们通过电子邮件共享链接或在facebook上发布网站链接,以及人们仅仅点击链接。
function site_referral_check() {
if (!is_admin()){
$allowed_host = \'google.com\'; // not actual production site
$theurl = $_SERVER[\'HTTP_REFERER\'];
$host = parse_url($theurl, PHP_URL_HOST);
//add console variable for debugging. how I know when $host is blank
$javascript_ouput = "<script>console.log(\'Debug Info: " .$host. "\');
</script>";
echo $javascript_ouput;
//echo "The allowed host: ".$allowed_host; exit;
if ( !isset($_COOKIE["site-referral"])) {
if ($host == $allowed_host) {
setcookie( "site-referral", "site-referral", time() + 1800, COOKIEPATH, COOKIE_DOMAIN);
}
if (!$host == $allowed_host) {
//Redirect
wp_redirect(\'http://google.com\' ); exit;
}
}
}
}