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

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

Jul 13, 2016 pm 05:54 PM
php session もの 個人の する エリア 要約する 会う 質問 プロジェクト

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

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

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

セッションは主に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技術記事今日、プロジェクトの作業中に問題が発生しました。以前何かを作るときは、サブドメイン間だけでなくクロスドメインの問題も解決できるように、セッションは通常データベースに直接保存されていましたが、今日この問題に遭遇しました...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

CakePHP の日付と時刻

CakePHP プロジェクトの構成 CakePHP プロジェクトの構成 Sep 10, 2024 pm 05:25 PM

CakePHP プロジェクトの構成

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

CakePHP ファイルのアップロード

CakePHP ルーティング CakePHP ルーティング Sep 10, 2024 pm 05:25 PM

CakePHP ルーティング

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP について話し合う

CakePHP クイックガイド CakePHP クイックガイド Sep 10, 2024 pm 05:27 PM

CakePHP クイックガイド

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法

See all articles