2

URLがiframeタグで設定されたものと異なる場合、ページへのアクセスを拒否する方法はありますか?

例えば。:

index.phpディレクトリにという名前のページを作成しましたabc

この URLhttp://www.mysite.com/client/client.phpをコーディングして、ページ index.php の iframe タグで開くようにしました。

<iframe src="http://www.mysite.com/client/client.php"> </iframe>

ユーザーは、そのページが通常アドレスhttp://www.mysite.com/abcにヒットするのを見るでしょうが、そのビューを別のリンク (コンテンツで利用可能なメニュー全体) に変更すると、たとえば、連絡先ページに移動します。iframe から出て、アドレス バーはもう表示されhttp://www.mysite.com/contactpageないはずです。http://www.mysite.com/abc

私はIF ELSEステートメントを使用してみましたが$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']、この場合はiframeのために変更されないアドレスバーからのURLを提供します。iframe 内の現在の URL アクセスを確認するにはどうすればよいですか?

4

1 に答える 1

0

target="_top"client.php のリンクごとに追加する必要があります。


手動でできない場合は、JavaScript で解決できます (ここでは PHP は役に立ちません)。index.php に次のコードを追加します (jQuery を使用):

<iframe id="client_frame" src="http://www.mysite.com/client/client.php"> </iframe>
<script type="text/javascript">
  $("#client_frame").on('load', function() {
    $(this.document).find('a').each(function() {
      if (!$(this).attr('target')) $(this).attr('target', '_top');
    });
  });
</script>

<a>iframe の DOM ドキュメントのすべての要素をループし、要素にtarget="_top"target 属性がない場合は追加します。

これは、埋め込まれた iframe が親ドキュメントと同じドメインを持っている場合にのみ機能することに注意してください。

于 2013-05-06T20:25:21.560 に答える