簡體   English   中英

隱藏或顯示基於IP地址的div元素

[英]Hide or show a div element based on IP address

是否有可能使用Apache,Javascript或CSS(或Plone中的某些內容)使<div>僅對一組IP地址可見?

以下是我希望在某些IP地址范圍內可用的代碼:

<div id="user">
    <ul>
        <li><a href="#" title="Login">Login</a></li>
    </ul>
</div>

理想情況下,我希望這只能從3組IP地址中看到。 我有一個單獨的站點運行以下限制(當然,IP地址已更改)以控制訪問,但是對整個站點,而不僅僅是一個div。

Order allow,deny
   Allow from 000.0.00
   Allow from 000.0.01

      # Order deny,allow
      # Deny from all

這樣做的目的是將彈出登錄(或登錄頁面)限制為不在特定位置訪問該站點的任何人。 即使我可以隱藏“用戶”div(未登錄時是登錄按鈕)給沒有從IP地址范圍訪問的人,也沒關系。 任何幫助將不勝感激,謝謝!

您可以使用Products.AutoRole自動為來自某些IP范圍的訪問者分配一個組,然后調整您的Plone模板,以便您的div以該組為條件。 (並且對於您的最終問題,我們應該提交一個功能請求,“可以登錄”應該綁定到權限,默認情況下將授予匿名權限。)

FWIW,在工作中,我們還在apache配置中限制/login|/login_form

你需要一些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>

我從這里得到了這個: https//stackoverflow.com/a/810461/3132718

現在,默認情況下,div不會在頁面上顯示,但仍可通過查看源代碼看到。

*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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM