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 常用类汇总 推荐收藏
May 13 PHP
PHP Zip压缩 在线对文件进行压缩的函数
May 26 PHP
php更改目录及子目录下所有的文件后缀的代码
Sep 24 PHP
PHP使用memcache缓存技术提高响应速度的方法
Dec 26 PHP
ThinkPHP函数详解之M方法和R方法
Sep 10 PHP
PHP实现补齐关闭的HTML标签
Mar 22 PHP
PHP中Cookie的使用详解(简单易懂)
Apr 28 PHP
php mysql PDO 查询操作的实例详解
Sep 23 PHP
PHP 数组黑名单/白名单实例代码详解
Jun 04 PHP
laravel 出现command not found问题的解决方案
Oct 23 PHP
PHP上传图片到数据库并显示的实例代码
Dec 20 PHP
利用PHP计算有多少小于当前数字的数字方法示例
Aug 26 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
PHPer 需要了解的 5 个 Composer 小技巧
2014/08/18 PHP
MyEclipse常用配置图文教程
2014/09/11 PHP
php while循环控制的简单实例
2016/05/30 PHP
visual studio code 调试php方法(图文详解)
2017/09/15 PHP
PHP Primary script unknown 解决方法总结
2019/08/22 PHP
JQuery 前台切换网站的样式实现
2009/06/22 Javascript
iframe 父窗口和子窗口相互的调用方法集锦
2010/12/15 Javascript
js实现日期级联效果
2014/01/23 Javascript
JavaScript中的方法重载实例
2015/03/16 Javascript
拥Bootstrap入怀——导航栏篇
2016/05/30 Javascript
微信小程序 网络请求(GET请求)详解
2016/11/16 Javascript
JavaScript解析JSON格式数据的方法示例
2017/01/24 Javascript
Node.JS中快速扫描端口并发现局域网内的Web服务器地址(80)
2017/09/18 Javascript
AngularJS使用ui-route实现多层嵌套路由的示例
2018/01/10 Javascript
vue.js页面加载执行created,mounted的先后顺序说明
2020/11/07 Javascript
elementui实现预览图片组件二次封装
2020/12/29 Javascript
实例讲解Python中函数的调用与定义
2016/03/14 Python
说一说Python logging
2016/04/15 Python
Python实现excel转sqlite的方法
2017/07/17 Python
从头学Python之编写可执行的.py文件
2017/11/28 Python
tensorflow创建变量以及根据名称查找变量
2018/03/10 Python
用Python一键搭建Http服务器的方法
2018/06/01 Python
对python中矩阵相加函数sum()的使用详解
2019/01/28 Python
python常用库之NumPy和sklearn入门
2019/07/11 Python
Python中zip()函数的简单用法举例
2019/09/02 Python
基于python的selenium两种文件上传操作实现详解
2019/09/19 Python
基于python的opencv图像处理实现对斑马线的检测示例
2020/11/29 Python
20行代码教你用python给证件照换底色的方法示例
2021/02/05 Python
Python读写Excel表格的方法
2021/03/02 Python
给导游的表扬信
2014/01/10 职场文书
大学生秋游活动方案
2014/02/17 职场文书
计划生育证明书写要求
2014/09/17 职场文书
资料员岗位职责
2015/02/10 职场文书
酒会开场白大全
2015/06/01 职场文书
高三英语教学反思
2016/03/03 职场文书
Java代码规范与质量检测插件SonarLint的使用
2022/08/05 Java/Android