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学习笔记之数组篇
Jun 28 PHP
PHP性能优化准备篇图解PEAR安装
Dec 05 PHP
php中检查文件或目录是否存在的代码小结
Oct 22 PHP
php ios推送(代码)
Jul 01 PHP
根据ip调用新浪api获取城市名并转成拼音
Mar 07 PHP
ThinkPHP之A方法实例讲解
Jun 20 PHP
php学习笔记之基础知识
Nov 08 PHP
php实现两表合并成新表并且有序排列的方法
Dec 05 PHP
基于linnux+phantomjs实现生成图片格式的网页快照
Apr 15 PHP
PHP创建PowerPoint2007文档的方法
Dec 10 PHP
PHP使用HTML5 FormData对象提交表单操作示例
Jul 02 PHP
php实现商城购物车的思路和源码分析
Jul 23 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
一个颜色轮换的简单例子
2006/10/09 PHP
使用array mutisort 实现按某字段对数据排序
2013/06/18 PHP
javaScript中两个等于号和三个等于号之间的区别介绍
2014/06/27 Javascript
IE6-IE9中tbody的innerHTML不能赋值的解决方法
2014/09/26 Javascript
JavaScript监听和禁用浏览器回车事件实例
2015/01/31 Javascript
jQuery实现图片渐入渐出切换展示效果
2015/08/15 Javascript
JS+JSP通过img标签调用实现静态页面访问次数统计的方法
2015/12/14 Javascript
js实现小窗口拖拽效果
2016/12/03 Javascript
JS实现物体带缓冲的间歇运动效果示例
2016/12/22 Javascript
JavaScript实现弹出广告功能
2017/03/30 Javascript
jquery中each循环的简单回滚操作
2017/05/05 jQuery
jQuery+ajax实现动态添加表格tr td功能示例
2018/04/23 jQuery
Node.js模块全局安装路径配置方法
2018/05/17 Javascript
jQuery实现监听下拉框选中内容发生改变操作示例
2018/07/13 jQuery
sharp.js安装过程中遇到的问题总结
2020/04/02 Javascript
vue+element table表格实现动态列筛选的示例代码
2021/01/14 Vue.js
[00:59]DOTA2背景故事第二期之四大基本法则
2020/07/07 DOTA
Python进行数据科学工作的简单入门教程
2015/04/01 Python
python正则表达式的使用
2017/06/12 Python
python opencv检测目标颜色的实例讲解
2018/04/02 Python
Python单向链表和双向链表原理与用法实例详解
2018/08/31 Python
深入浅析Python中的迭代器
2019/06/04 Python
Django REST framework内置路由用法
2019/07/26 Python
Django应用程序入口WSGIHandler源码解析
2019/08/05 Python
对python中UDP,socket的使用详解
2019/08/22 Python
python数据预处理 :数据共线性处理详解
2020/02/24 Python
纯css3实现照片墙效果
2014/12/26 HTML / CSS
input file上传文件样式支持html5的浏览器解决方案
2012/11/14 HTML / CSS
美国药妆网站:EDCskincare.com(防晒、痤疮、抗衰老等)
2017/04/28 全球购物
英国女士和男士时尚服装网上购物:Top Labels Online
2018/03/25 全球购物
大学生自我鉴定范文模板
2014/01/21 职场文书
拔河比赛口号
2014/06/10 职场文书
物业保安辞职信
2015/05/12 职场文书
四年级数学教学反思
2016/02/16 职场文书
导游词之徐州-云龙山
2019/09/29 职场文书
Pytorch 使用tensor特定条件判断索引
2021/04/08 Python