1

これは、どのサイトでページを iframe できるかを制御することに関するこの質問のフォローアップです。

受け入れられた回答を使用したいのですが、iframe 内のリンクをクリックすると、リファラーはフレーム化されたコンテンツをホストするドメインとして報告されます。フレーム内にない場合にサイトが表示されないようにするサーバー側の方法はありますか? (アパッチ、php5)

これが私が達成しようとしているものです:

私のサーバーはいくつかのコンテンツを生成します。そのコンテンツを特定の他のウェブサイトと共有したいと考えています。このコンテンツが単独で表示されることは望ましくありません。クライアント側のスクリプトはオフにできるので、できれば頼りたくありません。( body タグまたはメイン ラッパー div を に設定してdisplay: noneも、コンテンツはソースにまだ存在するため、実際には役に立ちません。)

4

3 に答える 3

1

リクエストが iframe 内からのものかどうかを PHP が判断することは不可能です。これは、最上位ウィンドウで行われた場合とまったく同じフォームになるためです。

インクルードを使用できないのはなぜですか?この場合、簡単な解決策があります。

if (strcmp(basename($_SERVER['SCRIPT_NAME']), basename(__FILE__)) === 0){
    header("location: index.php");
}

編集:

私が言いたいのは、iframe ではサーバー側からのアクセスを制御できないということです。

メイン ページindex.phpと iframe のようなページがあるとしますfoo.php

を行う<iframe src="foo.php"></iframe>と、サーバーに対して新しい HTTP リクエストが行われます。これは、 に対して行われたリクエストとほぼ同じですindex.php

インクルードを使用すると、リクエストは 1 つだけになります。PHP サーバーによって解析される要求のパラメーターの 1 つは、スクリプト名です。するとGET /index.php HTT/1.1、スクリプト名は になりますindex.php

私が示したコードを INCLUDED FILES に入れると、それらに直接アクセスできなくなります。インクルードで参照するだけです。

于 2013-05-15T20:42:12.620 に答える