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 相关文章推荐
解决GD中文乱码问题
Feb 14 PHP
dedecms 制作模板中使用的全局标记图文教程
Mar 11 PHP
php模板函数 正则实现代码
Oct 15 PHP
修改apache配置文件去除thinkphp url中的index.php
Jan 17 PHP
异步加载技术实现当滚动条到最底部的瀑布流效果
Sep 16 PHP
PHP实现即时输出、实时输出内容方法
May 27 PHP
CodeIgniter针对数据库的连接、配置及使用方法
Mar 03 PHP
mysql alter table命令修改表结构实例详解
Sep 24 PHP
php 解析xml 的四种方法详细介绍
Oct 26 PHP
PHP查询大量数据内存耗尽问题的解决方法
Oct 28 PHP
PHP大文件分割上传 PHP分片上传
Aug 28 PHP
Laravel中日期时间处理包Carbon的简单使用
Sep 21 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实现的简单美国商品税计算函数
2015/07/13 PHP
php 常用的系统函数
2017/02/07 PHP
PHP+swoole+linux实现系统监控和性能优化操作示例
2019/04/15 PHP
TP5框架简单登录功能实现方法示例
2019/10/31 PHP
Yii框架安装简明教程
2020/05/15 PHP
(仅IE下有效)关于checkbox 三态
2007/05/12 Javascript
JavaScript中的几个关键概念的理解-原型链的构建
2011/05/12 Javascript
JavaScript伸缩的菜单简单示例
2013/12/03 Javascript
js实现可拖动DIV的方法
2013/12/17 Javascript
从JQuery源码分析JavaScript函数的apply方法与call方法
2014/09/25 Javascript
javascript学习笔记(六)数据类型和JSON格式
2014/10/08 Javascript
javascript实现树形菜单的方法
2015/07/17 Javascript
详解JavaScript异步编程中jQuery的promise对象的作用
2016/05/03 Javascript
Jquery实现select multiple左右添加和删除功能的简单实例
2016/05/26 Javascript
angularjs 源码解析之injector
2016/08/22 Javascript
js html css实现复选框全选与反选
2016/10/09 Javascript
微信小程序 toast 详解及实例代码
2016/11/09 Javascript
Vue.js实战之组件的进阶
2017/04/04 Javascript
使用nodeJs来安装less及编译less文件为css文件的方法
2017/11/20 NodeJs
nodejs搭建本地服务器轻松解决跨域问题
2018/03/21 NodeJs
解决vue中使用Axios调用接口时出现的ie数据处理问题
2018/08/13 Javascript
angularJS1 url中携带参数的获取方法
2018/10/09 Javascript
python实现从文件中读取数据并绘制成 x y 轴图形的方法
2018/10/14 Python
详解Python的数据库操作(pymysql)
2019/04/04 Python
Python post请求实现代码实例
2020/02/28 Python
python requests包的request()函数中的参数-params和data的区别介绍
2020/05/05 Python
详解appium自动化测试工具(monitor、uiautomatorviewer)
2021/01/27 Python
HTML5所有标签汇总及标签意义解释
2015/03/12 HTML / CSS
旅游管理毕业生自荐信
2013/11/05 职场文书
会计师职业生涯规划范文
2014/02/18 职场文书
2015年信息技术教研组工作总结
2015/07/22 职场文书
高二数学教学反思
2016/02/18 职场文书
python requests模块的使用示例
2021/04/07 Python
ROS系统将python包编译为可执行文件的简单步骤
2021/07/25 Python
bose降噪耳机音能消除人声吗
2022/04/19 数码科技
python中Pyqt5使用Qlabel标签播放视频
2022/04/22 Python