6

ISV がホストする卒業生グループの小さな Web サイトを管理する必要があります。URL は www.myIsv.com/myWebSite/ のようなもので、非常に見苦しく、非常に忘れやすいものです。Web サーバーの主な管理者は、ドメイン名 www.mysmallwebsite.com を登録し、次のコンテンツを含む index.html を配置しました。

<html>
<head>
<title>www.mysmallwebsite.com</title>
</head>

<frameset>
   <frame src="http://www.myIsv.com/myWebSite/" name="redir">
      <noframes>
        <p>Original location:
          <a href="www.myIsv.com/myWebSite/">http://www.myIsv.com/myWebSite/</a>
        </p>
      </noframes>
 </frameset>  
</html>

正常に動作しますが、PHP セッション変数などの一部の機能が動作しなくなりました! それを修正するための提案はありますか?

編集: これは IE と Firefox の両方では機能しません (プラグインなし)

ありがとう

4

10 に答える 10

4

セッションはサーバーとドメインに関連付けられています。ドメイン全体でフレームセットを使用すると、設計された方法ではないため、あらゆる種類の破損が発生します。

apache mod rewriteを使用して「パススルーリダイレクト」を作成してみてください。ルールの「プロキシ」フラグ([P])は、必要な魔法のフラグです。

http://httpd.apache.org/docs/1.3/mod/mod_rewrite.htmlのドキュメント

于 2008-09-02T06:18:34.380 に答える
0

したがって、醜いドメイン名へのhtmlリンクを配置するとき、それが同じPHPサーバー(同じセッションが初期化されている)であると仮定すると、次のように配置できます...

www.myIsv.com/myWebSite/?PHPSESSID=<?=session_id()?>

セキュリティの観点から、私は本当に本当にそれがうまくいかないことを願っています

于 2008-09-01T20:54:32.990 に答える
0

ユーザー側で Cookie を設定し、リダイレクトの直後にその Cookie の存在を確認することもできます。これは、わかりやすい URL が気になる場合は、クエリ文字列で PHPSESSID を渡す必要がないことを意味します。 .

于 2008-09-01T23:28:53.960 に答える
0

どう言う意味ですか?www.mysmallwebsite.com から www.myIsv.com/myWebSite/ に移動すると、PHP セッションが失われるということですか?

PHP は ID (サーバー上で生成された英数字のハッシュ) でセッションを認識します。ID は、PHPSESSID などと呼ばれる Cookie を使用してリクエストからリクエストに渡されます (ブラウザを使用して Web サイトが設定する Cookie を表示できます... Firefox では、Firebug + FireCookie と素晴らしい Web 開発者ツールバーがあります.. . 汗をかかずにクッキーのリストを表示できます)。

つまり、PHP は PHPSESSID Cookie を介してセッション ID を渡しています。ただし、セッション ID をプレーンな GET 要求パラメーターとして渡すことができます。

したがって、醜いドメイン名へのhtmlリンクを配置すると、それが同じPHPサーバー(同じセッションが初期化されている)であると仮定すると、次のように配置できます...

www.myIsv.com/myWebSite/?PHPSESSID=<?=session_id()?>

私はしばらく PHP を使っていませんが、うまくいくと思います。

于 2008-09-01T20:26:20.903 に答える
0

http://www.myIsv.com/myWebSite/に直接アクセスすると、セッション変数は機能しますか? サーバー構成がセッションが機能するかどうかを決定するように思えます。ただし、何らかの形で www.mysmallwebsite.com でセッションを開始している場合 (PHP を使用しているようには見えませんが、使用している可能性があります)、バックエンドを作成しないとセッション データを転送できません。セッションをサーバーからサーバーに移動するロジック。

于 2008-09-01T20:27:10.340 に答える
0

スクリプトの先頭に session_start() を貼り付けて、変数に再度アクセスできるかどうかを確認してください。

于 2008-09-01T20:34:41.977 に答える
0

クライアントセッションはドメインごとであるため、機能していません。すべての Cookie は mysmallwebsite.com 用に保存されているため、myIsv.com はそれらにアクセスできません。

于 2008-09-01T20:36:21.783 に答える
0

@pix0r www.myIsv.com/myWebSite/ -> セッション変数が機能する www.mysmallwebsite.com -> セッション変数が機能しない

@Alexandru残念ながら、これは同じWebサーバー上にはありません

于 2008-09-01T20:36:44.390 に答える
0

使用しているブラウザ/アドオンは何ですか? ブラウザまたは他のソフトウェア (Web サーバーでさえあるかもしれません) がhttp://www.myIsv.com/myWebSite/からのセッションをブロックしている可能性があります。 XSS攻撃だと思います。

フレームなしでhttp://www.myIsv.com/myWebSite/でセッションが機能する場合は、フレームを使用する代わりに、http://www.mysmallwebsite.comから醜い URL にリダイレクトすることができます。

編集:セッションを使用する私のサイトであなたのフレームコードを試しました.firefoxはログインしてログインしたままで正常に動作しましたが、IE7は再びログアウトしました.

于 2008-09-01T20:38:19.843 に答える
0

人々が @ www.mysmallwebsite.com に到着したら、http://www.myIsv.com/myWebSite/にリダイレクトします。

<?php header('Location: http://www.myIsv.com/myWebSite/'); ?>

www.mysmqllwebsite.com/index.php にあるのはこれだけです。
このようにすれば、browserdr の互換性について心配したり、セッションが機能するかどうかを心配したりする必要はありません。リダイレクトを実行するだけで問題ありません。

于 2008-09-02T03:38:51.160 に答える