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数据库操作
Nov 01 PHP
PHP设计模式之观察者模式(Observer)详细介绍和代码实例
Apr 08 PHP
PHP Streams(流)详细介绍及使用
May 12 PHP
php正则匹配文章中的远程图片地址并下载图片至本地
Sep 29 PHP
php计划任务之验证是否有多个进程调用同一个job的方法
Dec 07 PHP
又拍云异步上传实例教程详解
Apr 19 PHP
PHP怎样用正则抓取页面中的网址
Aug 09 PHP
Yii2 加载css、js 载静态资源的方法
Mar 10 PHP
PHP使用文件锁解决高并发问题示例
Mar 29 PHP
PHP观察者模式示例【Laravel框架中有用到】
Jun 15 PHP
php生成静态页面并实现预览功能
Jun 27 PHP
浅谈laravel5.5 belongsToMany自身的正确用法
Oct 17 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
mysql 的 like 问题,超强毕杀记!!!
2007/01/18 PHP
php + nginx项目中的权限详解
2017/05/23 PHP
jQuery的一些注意
2006/12/06 Javascript
jQuery与ExtJS之选择实例分析
2010/08/19 Javascript
理解Javascript_11_constructor实现原理
2010/10/18 Javascript
JS中Iframe之间传值的方法
2013/03/11 Javascript
httpclient模拟登陆具体实现(使用js设置cookie)
2013/12/11 Javascript
JavaScript中的fontsize()方法使用详解
2015/06/08 Javascript
JavaScript中日期的相关操作方法总结
2015/10/24 Javascript
JavaScript必知必会(五) eval 的使用
2016/06/08 Javascript
boostrap模态框二次弹出清空原有内容的方法
2018/08/10 Javascript
javascript实现图片轮换动作方法
2020/08/07 Javascript
Vue封装Axios请求和拦截器的步骤
2020/09/16 Javascript
python在windows命令行下输出彩色文字的方法
2015/03/19 Python
python实现可将字符转换成大写的tcp服务器实例
2015/04/29 Python
wxpython实现图书管理系统
2018/03/12 Python
在python中利用最小二乘拟合二次抛物线函数的方法
2018/12/29 Python
python join方法使用详解
2019/07/30 Python
python操作openpyxl导出Excel 设置单元格格式及合并处理代码实例
2019/08/27 Python
Python中生成一个指定长度的随机字符串实现示例
2019/11/06 Python
如何解决tensorflow恢复模型的特定值时出错
2020/02/06 Python
BeautifulSoup获取指定class样式的div的实现
2020/12/07 Python
h5封装下拉刷新
2020/08/25 HTML / CSS
Myprotein法国官网:欧洲第一运动营养品牌
2019/03/26 全球购物
碧欧泉Biotherm加拿大官方网站:法国高端护肤品牌
2019/10/18 全球购物
德国前卫设计师时装在线商店:Luxury Loft
2019/11/04 全球购物
美国婴儿和儿童服装购物网站:PatPat
2020/10/01 全球购物
工厂总经理岗位职责
2014/02/07 职场文书
竞聘书怎么写,如何写?
2014/03/31 职场文书
公休请假条
2014/04/11 职场文书
杭州西湖英语导游词
2015/02/03 职场文书
教师聘用意向书
2015/05/11 职场文书
2015国庆节放假通知范文
2015/07/30 职场文书
如何让2019年上半年的工作总结更出色!
2019/07/01 职场文书
JUnit5常用注解的使用
2021/07/02 Java/Android
MySql重置root密码 --skip-grant-tables
2022/04/11 MySQL