私はfoo.comを実行します。 foo.comには2つの異なるアプリケーションがあります:1つはfoo.com/barで、もう1つはfoo.com/exampleです。私はセッションを使ってログイン中のユーザーに関する情報を追跡しますが、ユーザーがfoo.com/barからfoo.com/exampleに行くと、foo.com/exampleはユーザーがfoo.com/から開始したセッションを表示しますその情報を使用します。私の質問は、どのように私は同時に2つの異なるセッションが各ディレクトリに行くことができますか?同じドメインに2つの異なるセッションがある
答えて
また、同じセッションを使用しますが、あなたが探して変数名を変更することができます。
編集:申し訳ありませんが、これはあなたの質問に答えることはできませんが、別の解決方法を示します。
これは最善の解決策であるようです。ありがとう。 – Matthew
Thanks Matthewありがとうございました。あなたの質問に答えるならば覚えておいてください。それを 'The Answer'としてマークすることを覚えておいてください:) – user103219
投票された答えのほうが良いです - 最も良い方法は 'session_name'です。 – joryl
session_set_cookie_paramsを使用して、セッションのドメインとフォルダを保存することができます。 IE:
// Used on foo.com/example
session_set_cookie_params(86400, '/example');
// Used on foo.com/bar
session_set_cookie_params(86400, '/bar');
これは動作していません。私はそれを前に(そしてもう一度)試してみましたが、成功しませんでした。私のグローバルphp.ini設定と関係しているかもしれません。 – Matthew
末尾のバックスラッシュをパスに追加するには、 が必要です。それがなければ、それは確かに動作しません。 –
php.iniにアクセスできる場合は、 'session.cookie_path'パラメータを直接設定することができます。これは、この関数がオーバーライドするはずのものです。また、php.iniファイルにアクセスできない場合は、ini_set()を使用することもできます。 –
もう1つの解決策は、foo.com/barのすべてのセッション値を "bar_"とfoo.com/exampleと "example_"で事前に保留することで、セッション内に名前空間を効果的に作成することです。
これを退屈なものにする方法は、この機能を関数またはクラスメソッドに抽象化することです。例:
function set_session_value($key, $value) {
//figure out which prefix to use by checking the current working
//directory, or whatever method you like. set $prefix equal to
// "bar_" or "example_".
$_SESSION[$prefix . $key] = $value;
}
次に、一致する関数で値を取得します。
これの主な利点は、/ barでプログラミングしているときにどの変数名を/ exampleで使用しているか考える必要がないことです。もう1つは、セッション値の格納方法を変更する場合は、すべてを1か所で簡単に変更できるということです。
session_startを呼び出す前にsession_nameに電話する必要があります。これは、セッションを識別するために使用されるクッキーの名前を設定します(デフォルトでは、これはPHPSESSIDです)。
アプリケーションごとに異なる名前を使用してください。セッション内の変数を混乱させる必要はありません。
私はこれが古いことを認識しますが、誰かを助けるかもしれないと考えました。この例では、管理領域のセッションを個別に設定する方法を示しています。
if ($_SERVER['REQUEST_URI'] == '/admin/'):
$session_name = 'session1';
else:
$session_name = 'session2';
endif;
session_start($session_name);
これまで提供されているソリューションに関連する潜在的なセキュリティの影響を強調することは非常に重要だと思います。 私は約5年間Webアプリケーションの侵入テストを受けていて、今度はITセキュリティから始まるジュニアの訓練を支援するために、脆弱なセキュリティアプリケーションを多数開発しました。
私はちょうど提供されたソリューションをテストしており、どれも近隣のアプリケーションに属するセッションへのアクセスを妨げないことに気付いています。 session_name()で異なるセッション識別子名を使用しても、ユーザーはこれらの識別子の値を使用できません。 PHPには、セッション識別子の名前ごとに分離された記憶域がありません。私は、異なるセッション名を使用し、ブラウザのクッキーパスを設定する2つのアプリケーションを持っていました。以下の各のSet-Cookieディレクティブは、HTTPレスポンスに含まれていた:
Set-Cookie: TESTONE=<value one>; path=/testone/
Set-Cookie: TESTTWO=<value two>; path=/testtwo/
両方のアプリは完全に別のユーザーを持っていたし、誰かが唯一、彼らは/testone/
アプリはに応じて上の情報にアクセスすることができるかもしれ/testtwo/
アプリへのアクセスを持っていた場合セッションパラメータの処理方法。以下のコード例は、両方のアプリが認証成功後に$_SESSION["authenticated"]
パラメータを使用すると仮定した場合のデータ侵害の可能性を示しています。この$topsecretinfo
1にアクセスするには
<?php
session_name("TESTONE");
ini_set("session.cookie_path","/testone/");
session_start();
if ($_SESSION["authenticated"] == "yes")
echo $topsecretinfo;
?>
は、/testtwo/
アプリケーションで認証彼らTESTTWO
セッション識別子の値を取り、/testone/
アプリケーションに要求を送信するときにTESTONE
セッション識別子の値としてそれを使用する必要があります。 PHPのセッション検索プロセスは、対応する値を解析する以外はセッション識別子の名前を認識しません。すなわち、「agcy648dja6syd8f93」のセッション識別子値は、それを参照するために使用された名前にかかわらず、同じセッションオブジェクトを返す。
- 1. 同じドメインにある2つのiframeに同じセッションを読み込む
- 2. 同じデータベースを持つ異なるサーバーと異なるドメインのセッション管理
- 3. 同じWPサイトの2つのドメインですが、異なるヘッダ
- 4. 同じセッション、異なるドメイン、セッションIDを設定
- 5. 異なるドメインの同じインスタンスの2つのWebサーバ
- 6. 2つのブラウザと異なるセッションで同じページ - ASHX
- 7. エラー - 同じページに2つの異なるオプションがある2つのスライダー。
- 8. 1つのレールアプリケーション、2つのドメイン、それぞれ異なるセッション
- 9. 異なる2つのサーバー上の2つの同じサイトのセッションID
- 10. 同じマシン上にある2つの異なるSAP hybrisバージョンインスタンス
- 11. 異なるドメイン/プロジェクトの同じインタフェース
- 12. localhostでは、2つの異なるプロジェクトが同じセッションを共有します
- 13. 同じサーバー内の異なるドメインから2つのデータベースを操作する
- 14. 同じ.vimrc、2つの異なるコンピュータ
- 15. 2つの異なるサブドメイン/ CORS問題を持つ同じドメインの「Access-Control-Allow-Origin」がありません
- 16. テレグラムボット:同じドメインに異なるルートを持つ複数のボット
- 17. 2つの異なるポートで同じドメインのHTTPからHTTPSへのリダイレクト
- 18. 異なるドメイン同じディレクトリ - コードベース
- 19. 2つの異なるサブドメインで同じドメインを使用しますか?
- 20. Apache/Tomcat/Railo:同じドメインで2つの異なるポートを持つ2つのサイトを設定する
- 21. 異なるテーブルの同じデータが同じビューにある
- 22. 同じ行であるが位置が異なる2つのフレーズ - Itextsharp
- 23. 同じファイル、同じファイルサイズだが2つの異なるメモリサイズ、なぜですか?
- 24. 異なるドメインの2つの同じJoomlaサイトは異なる動作をします
- 25. Google Analytics - 同じページ(同じコード)に2つのドメイン
- 26. 同じIDで同じ列名であるが値が異なる2つのテーブルを結合する
- 27. 同じメモリアドレスに2つの異なる値があります - アセンブリ
- 28. 2つの異なるMD5が同じ入力にありますか?
- 29. 角度同じアプリケーション内に2つの異なるレイアウトがあります
- 30. 同じコントローラ内に2つの異なるレイアウトテンプレートがありますか?
django poweredプロジェクトで同じ機能を実現するにはどうすればいいですか? – Dania