4

テーマを書いていて、ブログの管理者だけにコンテンツを表示したいのですが、管理者がログインしているかどうかを検出する方法がわかりません。

HTMLの下部、終了bodyタグの直前に、次のコードがあることに気付きました。

<iframe src="http://assets.tumblr.com/iframe.html?10&src=http%3A%2F%2Fstaff.tumblr.com%2F&amp;lang=en_US&amp;name=staff" scrolling="no" width="330" height="25" frameborder="0" style="position:absolute; z-index:1337; top:0px; right:0px; border:0px; background-color:transparent; overflow:hidden;" id="tumblr_controls"></iframe>
<!--[if IE]>
<script type="text/javascript">document.getElementById('tumblr_controls').allowTransparency=true;</script>
<![endif]-->
<script type="text/javascript">_qoptions={qacct:"p-19UtqE8ngoZbM"};</script>
<script type="text/javascript" src="http://edge.quantserve.com/quant.js"></script>     
<noscript><img src="http://pixel.quantserve.com/pixel/p-19UtqE8ngoZbM.gif" style="display:none; border-width:0px; height:1px; width:1px;" alt=""/></noscript>

iframe(http://assets.tumblr.com/iframe.html?10&src=http%3A%2F%2Fstaff.tumblr.com%2F&lang=en_US&name=staff)のURLは、ユーザーがログインしています。どのように機能するのか理解できませんでした。

このチェックはテーマのコードに埋め込む必要があるため、JavaScriptで行う必要があります。

ありがとう、スペンサー

4

1 に答える 1

6

このチェックはサーバー上で行う必要があり、 Tumblrテーマエンジンの制限によりチェックできないため、問題は解決できないと思います。

更新:JSバージョンに戻る

iframeのリスト:

これらのiframeとは異なるコードブロック:

ログに記録されていないユーザー向けのTumblriframe:

<script type="text/javascript">
        var logged_in = (document.cookie.indexOf('logged_in=1') != -1);
</script>
…
<div style="position:absolute; top:3px; right:3px; white-space:nowrap; height:20px;">
    <span id="logged_out_controls" style="display:none;">
        <a href="https://www.tumblr.com/register" target="_top" id="follow_link">
                <img id="follow_image" alt="Follow" style="width:58px;"/>
        </a>
        <a href="https://www.tumblr.com/register/join_tumblr" target="_blank"
        id="join_link">
                <img id="join_image" alt="Join Tumblr" style="width:105px;"/>
        </a>
    </span>
</div>

ログに記録されたユーザーのTumblriframe[所有者]:

<div style="position:absolute; top:3px; right:3px; white-space:nowrap; height:20px;">
    <a target="_top" href="http://www.tumblr.com/customize?redirect_to=http%3A%2F%2Fexample.com%2F">
        <img src="http://assets.tumblr.com/images/iframe_customize_alpha.png?1016" alt="Customize" style="height:20px;width:80px; border-width:0px; display:block; float:left; cursor:pointer;" />
    </a>
    <a target="_top" href="http://www.tumblr.com/dashboard">
        <img src="http://assets.tumblr.com/images/iframe_dashboard_alpha.png?1016" alt="Dashboard" style="height:20px; width:81px; border-width:0px; display:block; float:left; cursor:pointer;" />
    </a>
</div>

ログに記録されたユーザーのTumblriframe[非所有者]:

<div style="position:absolute; top:3px; right:3px; white-space:nowrap; height:20px;">
    <form action="/follow" method="post" style="display:block; float:left;"onsubmit="_gaq.push(['_trackEvent', 'Iframe', 'Follow', 'example-com');">
        <input type="hidden" name="form_key" value="83jbGySgEVpQGOoZALqqoSaKfjs"/>
        <input type="hidden" name="id" value="example-com"/>
        <input type="image" src="http://assets.tumblr.com/images/iframe_follow_alpha.png?1016"style="width:58px; height:20px; border-width:0px; display:block;margin-left:3px; cursor:pointer;"alt="Follow"/>
    </form>
    <a target="_top" href="http://www.tumblr.com/dashboard">
        <imgsrc="http://assets.tumblr.com/images/iframe_dashboard_alpha.png?1016" alt="Dashboard" style="height:20px; width:81px; border-width:0px; display:block; float:left; cursor:pointer;"/>
    </a>
</div>

検出できる相違点:

ログに記録されていないIframeには、奇妙なスクリプト行があります。

  • varlogged_in =(document.cookie.indexOf('logged_in = 1')!= -1);

  • ' customizehref 'パターンを含む属性を持つリンクはありません(CSSの方法:) a[href*='customize'];

  • 'ダッシュボード'パターンを含む属性を持つリンクはありません(CSS方法:) ;hrefa[href*='dashboard']

ログに記録されたユーザーのIframe [所有者]

  • href'ダッシュボード'パターンを含む属性を持つリンクがあります(CSSの方法:) a[href*='dashboard'];
  • href'customize'パターンを含む属性を持つリンクがあります(CSS方法:) a[href*='customize'];

  • 「フォロー フォームはありません。

ログに記録されたユーザーのIframe [非所有者]

  • href'ダッシュボード'パターンを含む属性を持つリンクがあります(CSSの方法:) a[href*='dashboard'];
  • 「フォロー」フォームがあります。

  • ' customizehref 'パターンを含む属性を持つリンクはありません(CSSの方法:) a[href*='customize'];

結論

ただし、このソリューションは非常に壊れやすいと思います。上記の差分に基づいて、現在のブログのユーザー所有者を検出できると思います。

于 2012-07-24T10:03:40.613 に答える