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自动生成月历代码
Oct 09 PHP
PHP学习笔记之一
Jan 17 PHP
PHP中鲜为人知的10个函数
Feb 28 PHP
PHP return语句的另一个作用
Jul 30 PHP
PHP 实现判断用户是否手机访问
Jan 21 PHP
PHP中使用socket方式GET、POST数据实例
Apr 02 PHP
php恢复数组的key为数字序列的方法
Apr 28 PHP
PHP stream_context_create()函数的使用示例
May 12 PHP
PHP单例模式简单用法示例
Jun 23 PHP
PHP远程连接oracle数据库操作实现方法图文详解
Apr 11 PHP
详解将数据从Laravel传送到vue的四种方式
Oct 16 PHP
PHP设计模式(五)适配器模式Adapter实例详解【结构型】
May 02 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学习之php4与php5之间会穿梭一点点感悟
2007/05/03 PHP
奇怪的PHP引用效率问题分析
2012/03/23 PHP
Laravel 5.1 on SAE环境开发教程【附项目demo源码】
2016/10/09 PHP
php检查函数必传参数是否存在的实例详解
2017/08/28 PHP
在Laravel5.6中使用Swoole的协程数据库查询
2018/06/15 PHP
如何在Mozilla Gecko 用Javascript加载XSL
2007/01/09 Javascript
js页面跳转常用的几种方式
2010/11/25 Javascript
利用JS生成博文目录及CSS定制博客
2016/02/10 Javascript
jQuery实现的网格线绘制方法
2016/06/20 Javascript
详解在Vue中如何使用axios跨域访问数据
2017/07/07 Javascript
JavaScript基于面向对象实现的猜拳游戏
2018/01/03 Javascript
基于vue实现网站前台的权限管理(前后端分离实践)
2018/01/13 Javascript
解决ng-repeat产生的ng-model中取不到值的问题
2018/10/02 Javascript
vue-cli3 项目从搭建优化到docker部署的方法
2019/01/28 Javascript
javascript中的offsetWidth、clientWidth、innerWidth及相关属性方法
2020/05/14 Javascript
[09:37]DOTA2卡尔工作室 英雄介绍圣堂刺客篇
2013/06/13 DOTA
[01:20:05]DOTA2-DPC中国联赛 正赛 Ehome vs VG BO3 第二场 2月5日
2021/03/11 DOTA
python 简单的多线程链接实现代码
2016/08/28 Python
django 通过URL访问上传的文件方法
2019/07/28 Python
关于pytorch中网络loss传播和参数更新的理解
2019/08/20 Python
Python 70行代码实现简单算式计算器解析
2019/08/30 Python
利用pytorch实现对CIFAR-10数据集的分类
2020/01/14 Python
Python持续监听文件变化代码实例
2020/07/22 Python
vscode+PyQt5安装详解步骤
2020/08/12 Python
HTTP状态码详解
2021/03/18 杂记
css3实例教程 一款纯css3实现的环形导航菜单
2014/10/20 HTML / CSS
html5 offlline 缓存使用示例
2013/06/24 HTML / CSS
英国定做窗帘和纺织品面料一站式商店:Dekoria
2018/08/29 全球购物
机电工程专业应届生求职信
2013/10/03 职场文书
应届医学毕业生求职信分享
2013/12/02 职场文书
药学专业个人的自我评价
2013/12/31 职场文书
工程类专业自荐信范文
2014/03/09 职场文书
还款承诺书范文
2014/05/20 职场文书
公务员学习中国梦心得体会
2016/01/05 职场文书
端午节将至,用Python爬取粽子数据并可视化,看看网友喜欢哪种粽子吧!
2021/06/11 Python
关于mysql中时间日期类型和字符串类型的选择
2021/11/27 MySQL