PHP在同一域名下两个不同的项目做独立登录机制详解


Posted in PHP onSeptember 22, 2017

前言

目前有这样一个需求,在一个域名下 如: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,然后再继续会话。这样就会出现会话信息共享的局面,应该怎样独立出两个不同的会话信息呢?

一、定义session_name

其实很简单的,只需在b项目的初始化文件中使用session时,修改下 session_name 就可以了。

example.com/a/init.php

session_start();
// ...

example.com/b/init.php

// session_id('123456'); // 可以自定义session_id,默认是系统自己生成的

session_name('EBCP_SID'); // session_name 必须定义在session_start() 前

session_start();
// ...

二、测试

example.com/a/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

a项目的浏览器cookie:

PHP在同一域名下两个不同的项目做独立登录机制详解

example.com/b/test.php

<?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"));
}

输出结果:

session_v2 页面- 欢迎你继续回来 JackMa 2017-09-22 07:49:15

b项目的浏览器cookie:

PHP在同一域名下两个不同的项目做独立登录机制详解

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

PHP 相关文章推荐
php array_flip() 删除数组重复元素
Jan 14 PHP
在mysql数据库原有字段后增加新内容
Nov 26 PHP
一步一步学习PHP(8) php 数组
Mar 05 PHP
php 文件缓存函数
Oct 08 PHP
php 记录进行累加并显示总时长为秒的结果
Nov 04 PHP
php中is_null,empty,isset,unset 的区别详细介绍
Apr 28 PHP
我整理的PHP 7.0主要新特性
Jan 07 PHP
PHP+sqlite数据库操作示例(创建/打开/插入/检索)
May 26 PHP
PHP中$GLOBALS['HTTP_RAW_POST_DATA']和$_POST的区别分析
Jul 03 PHP
PHP实现链式操作的三种方法详解
Nov 16 PHP
PHP PDOStatement::closeCursor讲解
Jan 30 PHP
laravel 去掉index.php伪静态的操作方法
Oct 12 PHP
laravel5.4利用163邮箱发送邮件的步骤详解
Sep 22 #PHP
Laravel中Facade的加载过程与原理详解
Sep 22 #PHP
laravel实现分页样式替换示例代码(增加首、尾页)
Sep 22 #PHP
深入理解PHP的远程多会话调试
Sep 21 #PHP
Laravel中日期时间处理包Carbon的简单使用
Sep 21 #PHP
简单实现php上传文件功能
Sep 21 #PHP
Laravel中七个非常有用但很少人知道的Carbon方法
Sep 21 #PHP
You might like
WordPress判断用户是否登录的代码
2011/03/17 PHP
php数据类型判断函数有哪些
2013/09/23 PHP
PHP判断是否微信访问的方法示例
2019/03/27 PHP
PHP设计模式之建造者模式(Builder)原理与用法案例详解
2019/12/12 PHP
自定义一个jquery插件[鼠标悬浮时候 出现说明label]
2011/06/27 Javascript
javascript针对DOM的应用分析(三)
2012/04/15 Javascript
基于jquery中children()与find()的区别介绍
2013/04/26 Javascript
js正则表达式中test,exec,match方法的区别说明
2014/01/29 Javascript
JS倒计时代码汇总
2014/11/25 Javascript
JQuery的ON()方法支持的所有事件罗列
2015/02/28 Javascript
js实现的倒计时按钮实例
2015/06/24 Javascript
js实现仿网易点击弹出提示同时背景变暗效果
2015/08/13 Javascript
JS读取XML文件数据并以table形式显示数据的方法(兼容IE与火狐)
2016/06/02 Javascript
js删除Array数组中指定元素的两种方法
2016/08/03 Javascript
JavaScript正则表达式和级联效果
2017/09/14 Javascript
基于angular-utils-ui-breadcrumbs使用心得(分享)
2017/11/03 Javascript
详解js的作用域、预解析机制
2018/02/05 Javascript
详解JavaScript 的变量
2019/03/08 Javascript
详解vue2.6插槽更新v-slot用法总结
2019/03/09 Javascript
使用vue-cli3 创建vue项目并配置VS Code 自动代码格式化 vue语法高亮问题
2019/05/14 Javascript
微信小程序自定义波浪组件使用方法详解
2019/09/21 Javascript
在vue中使用echars实现上浮与下钻效果
2019/11/08 Javascript
iview实现动态表单和自定义验证时间段重叠
2021/01/10 Javascript
[15:15]教你分分钟做大人:狙击手
2014/10/30 DOTA
Python实现的字典值比较功能示例
2018/01/08 Python
python批量替换多文件字符串问题详解
2018/04/22 Python
Python3.7安装keras和TensorFlow的教程图解
2020/06/18 Python
html5使用canvas画一条线
2014/12/15 HTML / CSS
英国现代市场:ARKET
2019/04/10 全球购物
Dr. Martens马汀博士法国官网:马丁靴鼻祖
2020/01/15 全球购物
数控加工专业毕业生自荐信
2013/09/27 职场文书
安全伴我行演讲稿
2014/09/04 职场文书
财务工作疏忽检讨书
2014/09/11 职场文书
离婚协议书范本
2015/01/26 职场文书
2019西餐厅创业计划书范文!
2019/07/12 职场文书
nginx配置之并发频次限制
2022/04/18 Servers