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进行MySQL删除记录操作代码
Jun 07 PHP
php array_walk() 数组函数
Jul 12 PHP
php中使用redis队列操作实例代码
Feb 07 PHP
基于empty函数的输出详解
Jun 17 PHP
php下拉选项的批量操作的实现代码
Oct 14 PHP
PHP中array_map与array_column之间的关系分析
Aug 19 PHP
php实现session自定义会话处理器的方法
Jan 27 PHP
Smarty foreach控制循环次数的一些方法
Jul 01 PHP
Yii2增加验证码步骤详解
Apr 25 PHP
php版微信公众平台开发之验证步骤实例详解
Sep 23 PHP
Yii框架防止sql注入,xss攻击与csrf攻击的方法
Oct 18 PHP
PHP PDO和消息队列的个人理解与应用实例分析
Nov 25 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
PHP中的integer类型使用分析
2010/07/27 PHP
如何利用http协议发布博客园博文评论
2015/08/03 PHP
php实现生成验证码实例分享
2016/04/10 PHP
Laravel实现表单提交
2017/05/07 PHP
浅谈javascript 面向对象编程
2009/10/28 Javascript
js输出列表实现代码
2010/09/12 Javascript
javascript动态的改变IFrame的高度实现自动伸展
2013/10/12 Javascript
javascript日期格式化示例分享
2014/03/05 Javascript
教你用jquery实现iframe自适应高度
2014/06/11 Javascript
整理JavaScript对DOM中各种类型的元素的常用操作
2016/05/05 Javascript
基于Vue2的移动端开发环境搭建详解
2016/11/03 Javascript
利用JS轻松实现获取表单数据
2016/12/06 Javascript
Bootstrap CSS布局之按钮
2016/12/17 Javascript
浅谈es6 javascript的map数据结构
2017/12/14 Javascript
JQuery Ajax动态加载Table数据的实例讲解
2018/08/09 jQuery
vue绑定事件后获取绑定事件中的this方法
2018/09/15 Javascript
vue 全局环境切换问题
2019/10/27 Javascript
基于vue+element实现全局loading过程详解
2020/07/10 Javascript
python使用WMI检测windows系统信息、硬盘信息、网卡信息的方法
2015/05/15 Python
Python实现的基数排序算法原理与用法实例分析
2017/11/23 Python
python实现微信定时每天和女友发送消息
2019/04/29 Python
Puppeteer使用示例详解
2019/06/20 Python
用Python实现校园通知更新提醒功能
2019/11/23 Python
python新手学习使用库
2020/06/11 Python
python 中的命名空间,你真的了解吗?
2020/08/19 Python
详解Anaconda 的安装教程
2020/09/23 Python
H5离线存储Manifest原理及使用
2020/04/28 HTML / CSS
加州风格的游泳和沙滩装品牌:Cupshe
2019/06/10 全球购物
乌克兰第一的珠宝网上商店:Gold.ua
2019/11/29 全球购物
Delphi工程师笔试题
2013/09/21 面试题
2014年健康教育实施方案
2014/02/17 职场文书
构建高效课堂实施方案
2014/03/13 职场文书
员工廉洁自律承诺书
2014/05/26 职场文书
应聘护士求职信
2014/07/21 职场文书
横空出世观后感
2015/06/09 职场文书
如何用python识别滑块验证码中的缺口
2021/04/01 Python