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 实现多服务器共享 SESSION 数据
Aug 15 PHP
php下图片文字混合水印与缩略图实现代码
Dec 11 PHP
PHP验证码类代码( 最新修改,完全定制化! )
Dec 02 PHP
CMS中PHP判断系统是否已经安装的方法示例
Jul 26 PHP
在Ubuntu 14.04上部署 PHP 环境及 WordPress
Sep 02 PHP
PHP中绘制图像的一些函数总结
Nov 19 PHP
Mac环境下php操作mysql数据库的方法分享
May 11 PHP
php自动识别文字编码并转换为目标编码的方法
Aug 08 PHP
Yii2实现ajax上传图片插件用法
Apr 28 PHP
php解析base64数据生成图片的方法
Dec 06 PHP
Laravel框架集合用法实例浅析
May 14 PHP
PHP的重载使用魔术方法代码实例详解
Feb 26 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
DOTA2游戏同人动画《龙之血》导演接受采访
2021/03/05 欧美动漫
关于BIG5-HKSCS的解决方法
2007/03/20 PHP
PHP开发中四种查询返回结果分析
2011/01/02 PHP
PHP实现数组递归转义的方法
2014/08/28 PHP
php使用Cookie控制访问授权的方法
2015/01/21 PHP
yii2局部关闭(开启)csrf的验证的实例代码
2017/07/10 PHP
jquery 关键字“拖曳搜索”之“拖曳”以及 图片“提示自适应放大”效果 的实现
2010/04/18 Javascript
Jquery弹出窗口插件 LeanModal的使用方法
2012/03/10 Javascript
JavaScript中的console.profile()函数详细介绍
2014/12/29 Javascript
JavaScript截断字符串的方法
2015/07/15 Javascript
AngularJS入门教程之数据绑定用法示例
2016/11/01 Javascript
使用jQuery ajaxupload插件实现无刷新上传文件
2017/04/23 jQuery
Vue.js与 ASP.NET Core 服务端渲染功能整合
2017/11/16 Javascript
layerUI下的绑定事件实例代码
2018/08/17 Javascript
详解Vue This$Store总结
2018/12/17 Javascript
vue仿ios列表左划删除
2019/09/26 Javascript
Vue父子传递实例讲解
2020/02/14 Javascript
Node Express用法详解【安装、使用、路由、中间件、模板引擎等】
2020/05/13 Javascript
[02:44]DOTA2英雄基础教程 钢背兽
2013/12/19 DOTA
[01:06]DOTA2亚洲邀请赛专属珍藏-荧煌之礼
2017/03/24 DOTA
零基础写python爬虫之urllib2中的两个重要概念:Openers和Handlers
2014/11/05 Python
Python实现替换文件中指定内容的方法
2018/03/19 Python
详解python多线程、锁、event事件机制的简单使用
2018/04/27 Python
Python单例模式的四种创建方式实例解析
2020/03/04 Python
爱他美官方海外旗舰店:Aptamil奶粉
2017/12/22 全球购物
优质美利奴羊毛袜,不只是徒步旅行:Darn Tough Vermont
2018/11/05 全球购物
幼儿园教学随笔感言
2014/02/23 职场文书
地球一小时宣传标语
2014/06/24 职场文书
个人对照检查材料思想汇报
2014/09/26 职场文书
合伙经营协议书范本(通用版)
2014/12/03 职场文书
土木工程毕业答辩开场白
2015/05/29 职场文书
单位提档介绍信
2015/10/22 职场文书
《狮子和鹿》教学反思
2016/02/16 职场文书
MySQL GRANT用户授权的实现
2021/06/18 MySQL
分享3个非常实用的 Python 模块
2022/03/03 Python
Elasticsearch 批量操作
2022/04/19 Python