この記事は主に、PHP で同じドメイン名の下にある 2 つの異なるプロジェクトに独立したログイン機構を実装する方法に関する関連情報をサンプル コードを通じて詳しく紹介しており、あらゆる人の学習や仕事に一定の参考になります。 、それが必要な友達が来て、以下を見てください。
はじめに
現在、http://example.com のようなドメイン名の下に、example.com/a/、example.com/b/ という 2 つのプロジェクトがあります。この 2 つのプロジェクトは独立したプログラムであり、メンバーのログイン メカニズムが異なりますが、同じドメイン名の下でそれらのセッションが共有されることがわかります。つまり、ステーション a でログインした後、ステーション b のログイン セッションも表示されます。ステーション a のセッション情報。デフォルトの session_id 名は PHPSESSID であるため、プロジェクト a に初めてアクセスすると、PHPSESSID という名前の session_id が自動的に生成され、サーバー側で session_id にちなんで名付けられたファイルが作成されます。 session_id を送信する ブラウザの cookie に保存すると、サーバーは session_id を取得してセッションを継続します。このように、セッション情報を共有する状況が発生します。2 つの異なるセッション情報をどのように分離するか?
1. session_name
の定義は実際には非常に簡単で、プロジェクト b の初期化ファイルで session を使用するときに session_name を変更するだけです。 2. テスト
example.com /a/test.php
session_start(); // ...
出力結果:
// session_id('123456'); // 可以自定义session_id,默认是系统自己生成的
session_name('EBCP_SID'); // session_name 必须定义在session_start() 前
session_start();
// ...
example.com/b/test .php
<?php // a项目测试页面 define("IN_EB", true); include_once("./init.php"); if($_SESSION['nickname']) { // dump("session 页面- 欢迎你继续回来 {$_SESSION['nickname']} " . date("Y-m-d H:i:s")); } else { $_SESSION['nickname'] = "Corwien"; dump("session 页面- 你是第一次登录 {$_SESSION['nickname']} " . date("Y-m-d H:i:s")); }
出力結果:
session 页面- 欢迎你继续回来 Corwien 2017-09-22 07:49:15
B プロジェクトのブラウザクッキー:
以上がPHP が同じドメイン名の 2 つの異なるプロジェクトに対して独立したログイン メカニズムを使用する方法の概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。