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 相关文章推荐
html中select语句读取mysql表中内容
Oct 09 PHP
中英文字符串翻转函数
Dec 09 PHP
为PHP初学者的8点有效建议
Nov 20 PHP
php文本转图片自动换行的方法
Mar 13 PHP
php堆排序(heapsort)练习
Nov 13 PHP
php单态设计模式(单例模式)实例
Nov 18 PHP
两个php日期控制类实例
Dec 09 PHP
smarty中常用方法实例总结
Aug 07 PHP
PHP中each与list用法分析
Jan 08 PHP
PHP生成图像验证码的方法小结(2种方法)
Jul 18 PHP
php获取目录下所有文件及目录(多种方法)(推荐)
May 14 PHP
laravel 实现划分admin和home 模块分组
Oct 15 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字符转义相关函数小结(php下的转义字符串)
2007/04/12 PHP
php Smarty初体验二 获取配置信息
2011/08/08 PHP
关于PHP结束标签的使用细节探讨及联想
2013/03/04 PHP
zf框架的Filter过滤器使用示例
2014/03/13 PHP
PHP设计模式之模板方法模式定义与用法详解
2018/04/02 PHP
ExtJs使用IFrame的实现代码
2010/03/24 Javascript
JavaScript语言核心数据类型和变量使用介绍
2013/08/23 Javascript
Js保留小数点的4种效果实现代码分享
2014/04/12 Javascript
原生JS实现LOADING效果
2015/03/16 Javascript
js实现刷新iframe的方法汇总
2015/04/27 Javascript
JS控制静态页面之间传递参数获取参数并应用的简单实例
2016/08/10 Javascript
浅谈JS继承_寄生式继承 &amp; 寄生组合式继承
2016/08/16 Javascript
javascript深拷贝(deepClone)详解
2016/08/24 Javascript
利用jQuery的动画函数animate实现豌豆发射效果
2016/08/28 Javascript
微信小程序开发之选项卡(窗口底部TabBar)页面切换
2017/04/12 Javascript
vue中遇到的坑之变化检测问题(数组相关)
2017/10/13 Javascript
React如何解决fetch跨域请求时session失效问题
2018/11/02 Javascript
点击按钮弹出模态框的一系列操作代码实例
2019/03/29 Javascript
茶余饭后聊聊Vue3.0响应式数据那些事儿
2019/10/30 Javascript
JavaScript实现多个物体同时运动
2020/03/12 Javascript
Python Lambda函数使用总结详解
2019/12/11 Python
pytorch 彩色图像转灰度图像实例
2020/01/13 Python
在PyCharm中实现添加快捷模块
2020/02/12 Python
Pycharm 2020.1 版配置优化的详细教程
2020/08/07 Python
python利用opencv保存、播放视频
2020/11/02 Python
大学毕业的自我鉴定
2013/10/08 职场文书
教师找工作推荐信
2013/11/23 职场文书
母亲追悼会答谢词
2014/01/27 职场文书
解除劳动合同协议书范本
2014/04/14 职场文书
激励口号大全
2014/06/17 职场文书
民主评议党员自我评价材料
2014/09/18 职场文书
民政局办理协议离婚(范本)
2014/10/25 职场文书
欠款证明
2015/06/24 职场文书
2016年寒假家长评语
2015/10/10 职场文书
Golang: 内建容器的用法
2021/05/05 Golang
浅谈由position属性引申的css进阶讨论
2021/05/25 HTML / CSS