Javascript 基于IP地址隐藏或显示div元素
是否可以使用Apache、Javascript或CSS(或Plone中的某些东西)使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> 这样做的目的是将弹出式登录(或登录页面)限制为不从特定位置访
仅对一组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>