PHP 怎樣在同一個域名下兩個不一樣的項目作獨立的登陸機制?

目前有這樣一個需求,在一個域名下 如:http://example.com 下,有兩個項目,example.com/a/,example.com/b/,這兩個項目是相互獨立的程序,有不一樣的會員登陸機制,可是咱們知道,在同一個域名下,它的 session 會話是共享的,也就是你在a站登陸後,b站也會出現你在a站的session信息,由於默認的 session_id 名字是 PHPSESSID,即當你第一訪問a項目時,它會自動生成一個名爲 PHPSESSID 的session_id,並在服務器端建立一個以session_id 命名的文件,而後發送session_id到瀏覽器的cookie裏保存,當下一次訪問時,則會攜帶該 cookie 信息,服務器端拿到session_id,而後再繼續會話。這樣就會出現會話信息共享的局面,應該怎樣獨立出兩個不一樣的會話信息呢?php

1、定義session_name

其實很簡單的,只需在b項目的初始化文件中使用session時,修改下 session_name 就能夠了。瀏覽器

example.com/a/init.php服務器

session_start();
// ...

example.com/b/init.phpcookie

// session_id('123456');  // 能夠自定義session_id,默認是系統本身生成的

session_name('EBCP_SID');  // session_name 必須定義在session_start() 前

session_start();
// ...

2、測試

example.com/a/test.phpsession

<?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

a項目的瀏覽器cookie:
clipboard.pngspa

example.com/b/test.phpcode

<?php

// b項目測試頁面

define("IN_EB", true);
include_once("./init.php");

if($_SESSION['nickname'])
{
    //
    dump("session_v2 頁面- 歡迎你繼續回來 {$_SESSION['nickname']}  " . date("Y-m-d H:i:s"));
}
else
{
    $_SESSION['nickname'] = "JackMa";
    dump("session_v2 頁面- 你是第一次登陸 {$_SESSION['nickname']}  " . date("Y-m-d H:i:s"));
}

輸出結果:blog

session_v2 頁面- 歡迎你繼續回來 JackMa  2017-09-22 07:49:15

b項目的瀏覽器cookie:ip

clipboard.png

相關文章
相關標籤/搜索