ホームページ > バックエンド開発 > PHPチュートリアル > PHP セッションのクロスサブドメインの問題の概要_PHP チュートリアル

PHP セッションのクロスサブドメインの問題の概要_PHP チュートリアル

WBOY
リリース: 2016-07-13 17:54:03
オリジナル
997 人が閲覧しました

今日、プロジェクトに取り組んでいるときに問題が発生しました。過去に何かを作成するときは、クロスドメインの問題を解決できるように、セッションは通常データベースに直接保存されていました

サブドメイン間だけでなく、今日私が遭遇した問題は、他の人の既存のものに変更を加えなければならないということでした。ただのサブドメインなので

その時は、簡単な解決策があったはずです。

セッションは主に2つのパートに分かれています:
1 つはセッション データで、デフォルトでサーバーの tmp ファイルに保存され、ファイルの形式で存在します
もう 1 つは、セッション データをマークするセッション ID です。セッション ID は、セッション ファイルのファイル名であり、ランダムに生成されるため、セッションの一意性とランダム性が保証されます。通常、セッションのライフサイクルが設定されていない場合、セッション ID はブラウザを閉じた後、自動的にログアウトされ、新しいセッション ID が登録されます。クライアントが Cookie を無効にしない場合、Cookie はセッション セッションの開始時にセッション ID とセッションの有効期間を保存する役割を果たします。
異なるドメイン名を持つ 2 つの Web サイトが同じセッションを使用したいと考えていますが、これにはセッションのクロスドメインの問題が伴います。
デフォルトでは、各サーバーは同じクライアントに対して SESSION ID を生成します。たとえば、同じユーザー ブラウザの場合、サーバー A によって生成される SESSION ID は 11111111111 ですが、サーバー B によって生成される SESSION ID は 222222 です。また、PHP の SESSION データは、このサーバーのファイル システムに別途保存されます。 SESSION データを共有したい場合は、次の 2 つの目標を達成する必要があります:
1 つは、同じクライアントに対して各サーバーによって生成される SESSION ID は同じである必要があり、同じ COOKIE を介して渡すことができるということです。つまり、各サーバーは PHPSESSID という名前の同じ COOKIE を読み取ることができなければなりません。もう 1 つは、その保存方法です。 SESSION データ / の場所はすべてのサーバーにアクセスできる必要があります。簡単に言うと、これら 2 つの目標は、複数のサーバー (A サーバーと B サーバー) がクライアントの SESSION ID を共有し、サーバーの SESSION データも共有する必要があることです。

解決策は 3 つあります:
1. PHP ページの最初 (出力の前、session_start() の前) で次の設定を行うだけです
ini_set('session.cookie_path', '/');

ini_set('session.cookie_domain', '.mydomain.com');

ini_set('session.cookie_lifetime', '1800');

2.php.iniに設定する

session.cookie_path = /
session.cookie_domain = .mydomain.com

session.cookie_lifetime = 1800

3. PHPページの先頭で関数を呼び出す(1と同じ条件)

session_set_cookie_params(1800, '/', '.mydomain.com');

私の解決策は、入り口に次のコードを追加することです:

ini_set('session.cookie_path', '/');

ini_set('session.cookie_domain', '.domain.com'); //domain.com を独自のドメイン名に置き換えます

ini_set('session.cookie_lifetime', '1800');

写真に示すように:

サイト1

サイト 2

2 つのサイトの PHPSESSID が同じであることがわかります。これにより、クロスサブドメイン名の問題はもちろん解決されます

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/477987.html技術記事今日、プロジェクトの作業中に問題が発生しました。以前何かを作るときは、サブドメイン間だけでなくクロスドメインの問題も解決できるように、セッションは通常データベースに直接保存されていましたが、今日この問題に遭遇しました...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート