【问题标题】:Allow only 4 Domain's to access certain content on another site仅允许 4 个域访问另一个站点上的某些内容
【发布时间】:2019-03-21 02:49:51
【问题描述】:

我正在使用 4 个促销页面(都在不同的域上)用于我在另一个域上销售的服务。

所有 5 个页面/站点都使用“纯”PHP 和 HTML,没有 wordpress 或其他 CMS。

因此,在我的销售网站上,我有一个登录表单(用 js 编写),我只想在推荐人来自我的其他 4 个促销页面(域)时显示该表单。

所以我需要帮助的是执行以下操作的脚本:

来自 PRdomain1.com、PRdomain2.com、PRdomain3.com 和 PRdomain4.com 的人会看到:

标题

内容

登录表格

页脚

如果我的销售网站的网址直接输入到地址字段来自我的 4 个 PRdomains 之外的其他域,他们将看到:

标题

内容

页脚

1) 最好比 ;-) 更重要,它应该与大多数常见的浏览器兼容。它必须是安全的(LOGIN FORM 部分),因为它不应该通过 PRdomains 作为引用者以外的其他方式进行检索。

2) 如果 PRdomains 使用 http/https 或子页面不同(例如 PRdomain1.com/landing_page2.php),它必须有效,但不重要

3) 它不应该占用很多负载吗?我的 PRdomain 所有这些都为销售页面产生了大量流量。

【问题讨论】:

  • 你还没有问过问题。什么不工作?
  • 如果您控制其他域,请设置 cookie。当用户访问您要显示登录表单的站点时,检查 cookie 并显示内容。
  • @Alex Howansky 抱歉,现已修复
  • 请注意,referrer 不能被信任(它可以被客户端覆盖),因此依赖它的 任何 解决方案都不安全。也就是说,根据推荐人显示登录表单应该没什么大不了的。这只是一种形式。由于 regerrer,您实际上并没有登录它们。

标签: javascript php html dns


【解决方案1】:

你可以在你的页面上使用 jQuery 来做,像这样:

HEADER

CONTENT

<div id="#login" style="display: none">LOGIN FORM</div>

FOOTER

<script type="text/javascript">
$(document).ready (
{
  if ( document.location.hostname == 'prdomain1.com' || document.location.hostname == 'prdomain2.com' || document.location.hostname == 'prdomain3.com' || document.location.hostname == 'prdomain4.com')
  {
    $('#login').css ( 'display', 'block');
  }
});
</script>

使用此代码,您的 LOGIN FORM 将默认隐藏,因为 style="display: none" CSS at

标签,如果当前页面主机名(由 document.location.hostname 访问)具有您要查找的内容,脚本更改 display CSS 属性以显示 div 内容。

【讨论】:

  • 谢谢!该解决方案安全吗?我的意思是 PRdomains 使用 http/https 或子页面是否不同(例如 PRdomain1.com/landing_page2.php )并不重要?另外,想知道它是否不需要很多负载?我的 PRdomain 所有这些都为销售页面产生了大量流量....
  • 我不确定,但是将登录部分放在 PHP 标记中而不是使用 DIV 会“更安全”吗?
  • 在客户端使用是可以的。如果您的页面是使用 PHP 生成的,您可以在服务器端检查并仅在引用者在您的白名单上时打印,例如: if ( strpos ( "prdomain1.com", $_SERVER["SERVER_NAME"]) !== false || strpos ("prdomain2.com", $_SERVER["SERVER_NAME"]) !== false) { echo "FORM LOGIN"; }
  • 这行不通——document.location.hostname 和 $_SERVER["SERVER_NAME"] 包含当前页面的主机名,OP 想要一个引用主机名的条件。
  • 抱歉所有的混乱,OP现在应该更新所有信息(我希望)
【解决方案2】:

这可能是一个解决方案,但我不是这方面的专家,所以也许这里的其他人可以确认??

<?php
$referrer = $_SERVER['HTTP_REFERER'];
if (preg_match("/prdomain1.com/",$referrer)) {
      echo 'ALL CONTENT INCL. LOGIN FORM HERE');
} elseif (preg_match("/prdomain2.com/",$referrer)) {
      echo 'ALL CONTENT INCL. LOGIN FORM HERE');
} elseif (preg_match("/prdomain3.com/",$referrer)) {
      echo 'ALL CONTENT INCL. LOGIN FORM HERE');
} elseif (preg_match("/prdomain4.com/",$referrer)) {
      echo 'ALL CONTENT INCL. LOGIN FORM HERE');
} else {
      echo 'ALL CONTENT WITHOUT LOGIN FORM HERE');
};
?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-14
    • 2021-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多