6

コールズノートバージョン:

index.php?map_id=foowww.not-my-domain.comのiframeに読み込まれます。インデックスセットSESSION['map_id']=foo。FlashファイルはAuthenticate.phpを介して取得しようとしますSESSION['map_id']が、Authenticate.phpには変数に値が設定されていませ SESSIONん。

-最初のロードのみ、クロスドメインの問題。

詳細:

設定した場所にインデックスがあります。SESSION['map_id'] = foo

次に、インデックスファイルがフラッシュファイルをロードします。初期化されると、フラッシュは「Authenticate.php」ファイルにアクセスします。このファイルはエコーアウトされ、SESSION['map_id']を介してフラッシュにロードされLoadVarsます。次に、フラッシュは適切なデータを表示します。 このステップは別の方法で行うことはできません

これはすべて、メインサイトで問題なく機能します。この問題は、iframe埋め込みコードを提供して他のサイトに移植しようとすると発生します。

<iframe src="http://www.mydomain.com/?map_id=foo&code=bar" ... ></iframe>

別のサイト(www.anotherdomain.com)から埋め込みコードを新たにロードすると、SESSIONフラッシュが単に空であると言っているため、変数が破棄されたようです。($map_id空白を出力します)

インデックスファイルは引き続き$map_id「foo」として適切にエコーされます。「Authenticate.php」ファイルは変数にアクセスできないようSESSIONです。

session_start()適切なすべてのファイルに存在することを確認しました。

4

1 に答える 1

6

PHP セッション ID はデフォルトで Cookie を介して渡されますが、ドメイン間で Cookie を転送することはできません。代わりに、URL を介してセッション ID を渡してみてください。

これは、php ドキュメントの適切なページです。

セッション ID が自動的に行われない場合、php に URL でセッション ID を渡す方法がいくつかあります。

  1. URL でセッション ID を手動で渡すことができます (他の get 変数の前に来る必要があります)。

    <iframe src="http://www.mydomain.com/?&map_id=foo&code=bar">

  2. Cookie を無効にして、すべてのリクエストでセッション ID が自動的に URL に追加されるようにすることができます。

    ini_set("session.use_cookies","0");

  3. url_rewriter.tags 設定を編集して、セッション ID で書き換える HTML タグを PHP に指示できます。ここでは、iframe=src がデフォルト セットに追加されています。

    ini_set("url_rewriter.tags", "a=href,area=href,frame=src,iframe=src,input=src,form=fakeentry");

于 2009-04-30T02:50:59.570 に答える