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 相关文章推荐
2.PHP入门
Oct 09 PHP
php下使用无限生命期Session的方法
Mar 16 PHP
php 文件上传后缀名与文件类型对照表(几乎涵盖所有文件)
May 16 PHP
php Static关键字实用方法
Jun 04 PHP
php数组函数序列之each() - 获取数组当前内部指针所指向元素的键名和键值,并将指针移到下一位
Oct 31 PHP
PHP中的正则表达式函数介绍
Feb 27 PHP
使用PHP接收POST数据,解析json数据
Jun 28 PHP
wordpress自定义url参数实现路由功能的代码示例
Nov 28 PHP
php json_encode()函数返回json数据实例代码
Oct 10 PHP
php和editplus正则表达式去除空白行
Apr 17 PHP
php+js实现裁剪任意形状图片
Oct 31 PHP
thinkphp5实现无限级分类
Feb 18 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基础知识:类与对象(5) static
2006/12/13 PHP
PHP和javascript常用正则表达式及用法实例
2014/07/01 PHP
laravel框架中间件 except 和 only 的用法示例
2019/07/12 PHP
JQuery jsonp 使用示例代码
2009/08/12 Javascript
jQuery setTimeout()函数使用方法
2013/04/07 Javascript
根据当前时间在jsp页面上显示上午或下午
2014/08/18 Javascript
javascript使用数组的push方法完成快速排序
2014/09/15 Javascript
分享20款美化网站的 jQuery Lightbox 灯箱插件
2014/10/10 Javascript
JQuery+CSS实现图片上放置按钮的方法
2015/05/29 Javascript
javascript中使用new与不使用实例化对象的区别
2015/06/22 Javascript
Vue v2.5 调整和更新不完全问题
2017/10/24 Javascript
Bootstrap实现的表格合并单元格示例
2018/02/06 Javascript
jquery.pager.js实现分页效果
2019/07/29 jQuery
[02:40]DOTA2英雄基础教程 炼金术士
2013/12/23 DOTA
[08:56]DOTA2-DPC中国联赛2月23日Recap集锦
2021/03/11 DOTA
Python数据类型详解(一)字符串
2016/05/08 Python
你眼中的Python大牛 应该都有这份书单
2017/10/31 Python
Python编程中NotImplementedError的使用方法
2018/04/21 Python
如何通过雪花算法用Python实现一个简单的发号器
2019/07/03 Python
django-rest-swagger的优化使用方法
2019/08/29 Python
pycharm 对代码做静态检查操作
2020/06/09 Python
如何在Python3中使用telnetlib模块连接网络设备
2020/09/21 Python
python regex库实例用法总结
2021/01/03 Python
Bravofly德国:预订廉价航班和酒店
2019/09/22 全球购物
英国领先的在线礼品店:Getting Personal
2019/09/24 全球购物
Andrew Marc官网:设计师外套的领先制造商
2019/10/30 全球购物
计算机专业职业规划
2014/02/28 职场文书
年终奖发放方案
2014/06/02 职场文书
校庆口号
2014/06/20 职场文书
2015元旦家电促销活动策划方案
2014/12/09 职场文书
银行先进个人总结
2015/02/15 职场文书
2015年团支部工作总结
2015/04/03 职场文书
党员志愿者服务倡议书
2015/04/29 职场文书
公务员岗前培训心得体会
2016/01/08 职场文书
Python音乐爬虫完美绕过反爬
2021/08/30 Python
教你利用Nginx 服务搭建子域环境提升二维地图加载性能的步骤
2021/09/25 Servers