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作的文本留言本的例子(五)
Oct 09 PHP
用DBSQL类加快开发MySQL数据库程序的速度
Oct 09 PHP
php将数据库中所有内容生成静态html文档的代码
Apr 12 PHP
php将数据库导出成excel的方法
May 07 PHP
常见php数据文件缓存类汇总
Dec 05 PHP
PHP使用PDO操作数据库的乱码问题解决方法
Apr 08 PHP
数组任意位置插入元素,删除特定元素的实例
Mar 02 PHP
php获取linux命令结果的实例
Mar 13 PHP
PHP实现可添加水印与生成缩略图的图片处理工具类
Jan 16 PHP
Thinkphp5.0 框架使用模型Model添加、更新、删除数据操作详解
Oct 11 PHP
解决php扩展安装不生效问题
Oct 25 PHP
如何通过PHP实现Des加密算法代码实例
May 09 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异步执行的详解
2013/06/03 PHP
laravel框架中表单请求类型和CSRF防护实例分析
2019/11/23 PHP
论坛里点击别人帖子下面的回复,回复标题变成“回复 24# 的帖子”
2009/06/14 Javascript
JavaScript 大数据相加的问题
2011/08/03 Javascript
利用JS进行图片的切换即特效展示图片
2013/12/03 Javascript
jquery和雅虎的yql服务实现天气预报服务示例
2014/02/08 Javascript
Javascript仿PHP $_GET获取URL中的参数
2014/05/12 Javascript
JS组件系列之Bootstrap table表格组件神器【终结篇】
2016/05/10 Javascript
jQuery双向列表选择器select版
2016/11/01 Javascript
Bootstrap table的使用方法
2016/11/02 Javascript
清除浏览器缓存的几种方法总结(必看)
2016/12/09 Javascript
javascript简单链式调用案例分析
2017/05/10 Javascript
浅谈Angular4实现热加载开发旅程
2017/09/08 Javascript
VUE DOM加载后执行自定义事件的方法
2018/09/07 Javascript
vue-cli3.0如何使用CDN区分开发、生产、预发布环境
2018/11/22 Javascript
解决layer.prompt无效的问题
2019/09/24 Javascript
node读写Excel操作实例分析
2019/11/06 Javascript
python strip()函数 介绍
2013/05/24 Python
常见python正则用法的简单实例
2016/06/21 Python
python执行使用shell命令方法分享
2017/11/08 Python
Python3内置模块pprint让打印比print更美观详解
2019/06/02 Python
Python 实现判断图片格式并转换,将转换的图像存到生成的文件夹中
2020/01/13 Python
基于Python实现体育彩票选号器功能代码实例
2020/09/16 Python
Django中使用Celery的方法步骤
2020/12/07 Python
CSS3制作轮播图的一种方法
2019/11/11 HTML / CSS
canvas实现图片马赛克的示例代码
2018/03/26 HTML / CSS
英国剑桥包官网:The Cambridge Satchel Company
2016/08/01 全球购物
比利时香水网上商店:NOTINO
2018/03/28 全球购物
MATCHESFASHION.COM美国官网:英国奢侈品零售商
2018/10/29 全球购物
国贸类专业毕业生的求职信分享
2013/12/08 职场文书
求职信模板
2014/05/23 职场文书
党员志愿者活动总结
2014/06/26 职场文书
2015羊年春节慰问信
2015/02/14 职场文书
狼牙山五壮士观后感
2015/06/09 职场文书
学生病假条怎么写
2015/08/17 职场文书
《唯一的听众》教学反思
2016/02/18 职场文书