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中常用编辑器推荐
Jan 02 PHP
一个显示某段时间内每个月的方法 返回由这些月份组成的数组
May 16 PHP
对于PHP 5.4 你必须要知道的
Aug 07 PHP
微信公众号点击菜单即可打开并登录微站的实现方法
Nov 14 PHP
PHP获取数组最大值下标的方法
May 12 PHP
Yii2 ActiveRecord多表关联及多表关联搜索的实现
Jun 30 PHP
php简单生成一组与多组随机字符串的方法
May 09 PHP
php分页查询mysql结果的base64处理方法示例
May 18 PHP
php处理静态页面:页面设置缓存时间实例
Jun 22 PHP
PHP观察者模式示例【Laravel框架中有用到】
Jun 15 PHP
php对象工厂类完整示例
Aug 09 PHP
在phpstudy集成环境下的nginx服务器下配置url重写
Dec 02 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函数memory_get_usage获取PHP内存清耗量的方法
2011/12/06 PHP
解析PHP中数组元素升序、降序以及重新排序的函数
2013/06/20 PHP
php实现批量下载百度云盘文件例子分享
2014/04/10 PHP
php根据数据id自动生成编号的实现方法
2016/10/16 PHP
NiftyCube——轻松实现圆角边框
2007/02/20 Javascript
jquery 弹出层注册页面等(asp.net后台)
2010/06/17 Javascript
jquery选择器的选择使用及性能介绍
2013/01/16 Javascript
js中 关于undefined和null的区别介绍
2013/04/16 Javascript
Jquery如何实现点击时高亮显示代码
2014/01/22 Javascript
jQuery源码解读之addClass()方法分析
2015/02/20 Javascript
Js+php实现异步拖拽上传文件
2015/06/23 Javascript
JS实现可自定义大小,可双击关闭的弹出层效果
2015/10/16 Javascript
基于jquery实现省市联动特效
2015/12/17 Javascript
2016年最热门的15 款代码语法高亮工具,美化你的代码
2016/01/06 Javascript
JavaScript使ifram跨域相互访问及与PHP通信的实例
2016/03/03 Javascript
JavaScript编写Chrome扩展实现与浏览器的交互及时间通知
2016/05/16 Javascript
JS中的==运算: [''] == false —&gt;true
2016/07/24 Javascript
浅谈使用mpvue开发小程序需要注意和了解的知识点
2018/05/23 Javascript
vue+element-ui实现表格编辑的三种实现方式
2018/10/31 Javascript
JavaScript实现PC端横向轮播图
2020/02/07 Javascript
[02:20]DOTA2中文配音宣传片
2013/05/22 DOTA
利用Python正则表达式过滤敏感词的方法
2019/01/21 Python
Django框架中间件定义与使用方法案例分析
2019/11/28 Python
Python 实现opencv所使用的图片格式与 base64 转换
2020/01/09 Python
如何解决tensorflow恢复模型的特定值时出错
2020/02/06 Python
深入了解python列表(LIST)
2020/06/08 Python
python实现三壶谜题的示例详解
2020/11/02 Python
matplotlib制作雷达图报错ValueError的实现
2021/01/05 Python
HTML5新增的8类INPUT输入类型介绍
2015/07/06 HTML / CSS
雅诗兰黛澳大利亚官网:Estée Lauder澳大利亚
2019/05/31 全球购物
澳大利亚领先的女性运动服品牌:Lorna Jane
2020/06/19 全球购物
do you have any Best Practice for testing
2016/06/04 面试题
Java面试题:Java类的Main方法如果是Private将会怎么样
2016/08/18 面试题
轻金属冶金专业毕业生自荐信
2013/11/02 职场文书
2014乡镇领导班子四风对照检查材料思想汇报
2014/10/05 职场文书
推普标语口号大全
2015/12/26 职场文书