Javascript 基于IP地址隐藏或显示div元素

Javascript 基于IP地址隐藏或显示div元素,javascript,css,apache,plone,ip-address,Javascript,Css,Apache,Plone,Ip Address,是否可以使用Apache、Javascript或CSS(或Plone中的某些东西)使仅对一组IP地址可见 以下是我希望在特定IP地址范围内可用的代码: <div id="user"> <ul> <li><a href="#" title="Login">Login</a></li> </ul> </div> 这样做的目的是将弹出式登录(或登录页面)限制为不从特定位置访

是否可以使用Apache、Javascript或CSS(或Plone中的某些东西)使
仅对一组IP地址可见

以下是我希望在特定IP地址范围内可用的代码:

<div id="user">
    <ul>
        <li><a href="#" title="Login">Login</a></li>
    </ul>
</div>
这样做的目的是将弹出式登录(或登录页面)限制为不从特定位置访问站点的任何人。即使我可以将“user”div(未登录时的登录按钮)隐藏给未从IP地址范围访问的任何人,也没关系。任何帮助都将不胜感激,谢谢

您需要一些css:

#user {
   display: none;
}
还有一些js:

<script type="application/javascript">
    function getip(json){
      if(json.ip === "127.0.0.1") {
         document.getElementById('user').style.display = 'block';
      }
    }
</script>

<script type="application/javascript" src="http://jsonip.appspot.com/?callback=getip"></script>

函数getip(json){
如果(json.ip==“127.0.0.1”){
document.getElementById('user').style.display='block';
}
}
我从这里得到这个:

现在,默认情况下,该div在页面上不可见,但通过查看源代码仍然可以看到。

您可以使用将组自动分配给来自特定IP范围的访问者,然后调整Plone模板,使您的div以该组为条件。(对于您的最终问题,我们可能应该提交一个功能请求,即“可以登录”应该绑定到一个权限,默认情况下,该权限将授予anonymous。)

FWIW,在工作中,我们还限制apache配置中的
/login |/login_form

*多类隐藏*
*multiple class hiding*
<script type="application/javascript">
function getip(json){
  if(json.query == "87.1.1.5") {
    var elems = document.getElementsByClassName('price');
    for (i = 0; i < elems.length; i++) {
    elems[i].style.display = 'block';
     }
  }
}
函数getip(json){ 如果(json.query==“87.1.1.5”){ var elems=document.getElementsByClassName('price'); 对于(i=0;i



你到底为什么想要这个?希望这不是一种保护(安全性)?理想情况下,我认为在呈现HTML时应该在服务器端进行。我认为IP地址是较低级别的细节,不应该进入客户端,即JS/CSS。这并不是真正为了安全,因为任何有url的人都可以进入登录页面,更重要的是,让登录变得不那么明显,除非在某个建筑物内。据我所知,PHP不可用。基于URL做怎么样?因此,如果有人访问www.mysite.com,它是不可见的,但如果他们访问www.mysiteeditor.com/mysite,它将是?IIRC,您应该能够在URL上切换(重氮)主题,并且您可以使用重氮删除(稍微调整)公共主题上的股票元素。这方面的Plone主题文档中可能有一些内容。在许多环境中,ip地址可以被前端软件隐藏。在这种情况下,我建议您使用Products.AutoRoleFromHostHeaderIt不再工作:(
*multiple class hiding*
<script type="application/javascript">
function getip(json){
  if(json.query == "87.1.1.5") {
    var elems = document.getElementsByClassName('price');
    for (i = 0; i < elems.length; i++) {
    elems[i].style.display = 'block';
     }
  }
}
<script type="application/javascript" src="http://ip-api.com/json/?callback=getip"></script>