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下几种删除目录的方法总结
Aug 19 PHP
php守护进程 加linux命令nohup实现任务每秒执行一次
Jul 04 PHP
php处理斐波那契数列非递归方法
Feb 04 PHP
php实现批量下载百度云盘文件例子分享
Apr 10 PHP
强制PHP命令行脚本单进程运行的方法
Apr 15 PHP
PHP获取QQ达人QQ信息的方法
Mar 05 PHP
php抓取网站图片并保存的实现方法
Oct 29 PHP
详解thinkphp实现excel数据的导入导出(附完整案例)
Dec 29 PHP
PHP实现留言板功能的详细代码
Mar 25 PHP
自制PHP框架之路由与控制器
May 07 PHP
thinkphp分页集成实例
Jul 24 PHP
PHP使用phpunit进行单元测试示例
Sep 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
配置最新的PHP加MYSQL服务器
2006/10/09 PHP
让PHP更快的提供文件下载的代码
2012/06/13 PHP
php中将html中的br换行符转换为文本输入中的换行符
2013/03/26 PHP
你可能不知道PHP get_meta_tags()函数
2014/05/12 PHP
PHP中each与list用法分析
2016/01/08 PHP
php连接MSsql server的五种方法总结
2018/03/04 PHP
用php实现分页效果的示例代码
2020/12/10 PHP
Javascript中的Split使用方法与技巧
2007/03/09 Javascript
jquery scroll()区分横向纵向滚动条的方法
2014/04/04 Javascript
javascript函数式编程实例分析
2015/04/25 Javascript
jq实现左侧显示图片右侧文字滑动切换效果
2015/08/04 Javascript
基于chosen插件实现人员选择树搜索自动筛选功能
2016/09/24 Javascript
谈谈Vue.js——vue-resource全攻略
2017/01/16 Javascript
Vue中通过Vue.extend动态创建实例的方法
2019/08/13 Javascript
iview form清除校验状态的实现
2019/09/19 Javascript
ligerUI的ligerDialog关闭刷新的方法
2019/09/27 Javascript
js+audio实现音乐播放器
2020/09/13 Javascript
Saltstack快速入门简单汇总
2016/03/01 Python
带你了解python装饰器
2017/06/15 Python
python下载图片实现方法(超简单)
2017/07/21 Python
Python字符串拼接的几种方法整理
2017/08/02 Python
Flask数据库迁移简单介绍
2017/10/24 Python
pandas.loc 选取指定列进行操作的实例
2018/05/18 Python
python递归实现快速排序
2018/08/18 Python
对Django外键关系的描述
2019/07/26 Python
python mysql中in参数化说明
2020/06/05 Python
Bjorn Borg官方网上商店:国际运动时尚品牌
2016/08/27 全球购物
Expedia挪威官网:酒店、机票和租车
2018/03/03 全球购物
Michael Kors加拿大官网:购买设计师手袋、手表、鞋子、服装等
2019/03/16 全球购物
请写出 BOOL flag 与"零值"比较的 if 语句
2016/02/29 面试题
宿舍卫生检讨书
2014/01/16 职场文书
新闻发布会策划方案
2014/06/12 职场文书
大学竞选班干部演讲稿
2014/08/21 职场文书
教师个人查摆剖析材料
2014/10/14 职场文书
导游词之湖北梁子湖
2019/11/07 职场文书
南阳市白酒市场的调查报告
2019/11/08 职场文书