私はウェブサイトwww.example.comを持っています。これには、単一のアプリケーションまたはプログラムで機能する複数のサブドメインがあります。たとえば、login.example.comはユーザーがサイトにログインできるようにし、system.example.comはユーザーが情報システムにアクセスできるようにし、forums.example.comはユーザーがフォーラムにアクセスできるようにします。
ユーザーIDやユーザー設定などのサブドメイン間で情報を渡す必要がある場合があります。SESSION変数を使用してサブドメイン間で情報を渡すにはどうすればよいですか?
編集:私はこのアイデアが好きです:
スクリプトの最初のものとして:
ini_set('session.cookie_domain', '.example.com' );
PHPセッションIDはCookieに保存されます。 すべてのサブドメインでCookieを使用できるようにするには、Cookieをルートドメインに割り当てる必要があります。次に、すべてのサブドメインがCookieからセッションIDを取得し、PHPは渡されたセッションIDを使用してセッションを見つけることができます。
結局のところ、session.cookie_domain
ファイルのルートドメインにphp.ini
を設定する必要があります
session.cookie_domain = ".example.com"
また、iniエントリの設定に使用されるさまざまなアプローチについて manual を確認してください。
1)サブドメインは、セッションファイルを保存するために同じパスを使用する必要があります
2)あなたの
php.ini _session.cookie_domain = ".example.com"
_
または.htaccess _php_value session.cookie_domain .example.com
_
またはスクリプト内ini_set('session.cookie_domain', '.example.com' );
私は自分の問題の解決策を見つけました:
session_name("2620368ghwahw90w");
session_set_cookie_params(0, '/', '.mydomain.com');
session_start();
これは問題なく機能しているようです。これはセキュリティリスクの低い優れた方法ですか?
Phpファイルでセッションを作成する前に、最初の行に次の行を追加します。
<?php
//session cross to sub domain
ini_set('session.cookie_domain', substr($_SERVER['SERVER_NAME'],strpos($_SERVER['SERVER_NAME'],"."),100));
あなたはクッキーを使うことができます。 setcookie() のpath
パラメータを確認してください。これにより、そのCookieがドメイン全体で使用できるようになります。これの欠点は、Cookieをオフにする人です(プライベートブラウジングモード)
別の方法は リンクを使用してsessionIDを渡す またはhidden <input>
フィールド(フォーム用)。
別々のWebサイトはセッションを共有しないため(私が知る限り、サブドメインは技術的に互いに「異なる場所」であるため)、サーバー側に保存するためにセッションを使用しないでください。代わりに、データベースを使用してセッションを処理してください。そうすれば、複数のサイトが同じセッション追跡テーブルを共有できます。
チャームのように機能します!
最もクリーンな方法は、.envに変数_SESSION_DOMAIN=.example.com
_を作成することだと思います。
または、_config/session.php
_を開いて'domain' => env('SESSION_DOMAIN', '.example.com')
を設定し、すべてのサブドメインを設定することもできます。 _domain.example.com
_、_test.example.com
_でも_example.com
_は同じセッションを共有します
私はこれをしばらくの間試してきましたが、私にとってうまくいったのは以下のコードを配置することです:
session_name("some_session_name"); session_set_cookie_params(0, '/', '.some_domain.com'); session_start();
セッション変数を使用するすべてのサブドメインにわたって。これをインデックスphpファイルの先頭に設定すると機能します。これがそれを明らかにすることを願っています。
サブドメイン間でセッションCookieを共有するには、Cookieのドメインを.example.org
に設定する必要があります(ドットに注意してください)。
http://www.php.net/manual/en/session.configuration.php#ini.session.cookie-domain