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 相关文章推荐
一个改进的UBB类
Oct 09 PHP
关于时间计算的结总
Dec 06 PHP
坏狼php学习 计数器实例代码
Jun 15 PHP
PHP转换文件夹下所有文件编码的实现代码
Jun 06 PHP
zend framework文件上传功能实例代码
Dec 25 PHP
PHP资源管理框架Assetic简介
Jun 12 PHP
PHP实现一个简单url路由功能实例
Nov 05 PHP
PHP标准库(PHP SPL)详解
Mar 16 PHP
Laravel-admin之修改操作日志的方法
Sep 30 PHP
tp5 实现列表数据根据状态排序
Oct 18 PHP
php实现通过stomp协议连接ActiveMQ操作示例
Feb 23 PHP
PHP字符串和十六进制如何实现互相转换
Jul 16 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
地球防卫队:陪着奥特曼打小怪兽的人类力量 那些经典队服
2020/03/08 日漫
php 用sock技术发送邮件的函数
2007/07/21 PHP
php图片加水印原理(超简单的实例代码)
2013/01/18 PHP
微信公众平台开发实现2048游戏的方法
2015/04/15 PHP
php使用curl下载指定大小的文件实例代码
2017/09/30 PHP
jQuery 版本的文本输入框检查器Input Check
2009/07/09 Javascript
jquery插件珍藏(图片局部放大/信息提示框)
2013/01/08 Javascript
教你用AngularJS框架一行JS代码实现控件验证效果
2014/06/23 Javascript
Javascript 构造函数详解
2014/10/22 Javascript
JavaScript中的getTime()方法使用详解
2015/06/10 Javascript
javascript常用的方法整理
2015/08/20 Javascript
jQuery简单实现两级下拉菜单效果代码
2015/09/15 Javascript
AngularJS入门教程之Scope(作用域)
2016/07/27 Javascript
js H5 canvas投篮小游戏
2016/08/18 Javascript
Javascript 创建类并动态添加属性及方法的简单实现
2016/10/20 Javascript
canvas实现钟表效果
2017/02/13 Javascript
一些手写JavaScript常用的函数汇总
2019/04/16 Javascript
vue router总结 $router和$route及router与 router与route区别
2019/07/05 Javascript
Python 正则表达式(转义问题)
2014/12/15 Python
简单说明Python中的装饰器的用法
2015/04/24 Python
python网络编程之文件下载实例分析
2015/05/20 Python
python好玩的项目—色情图片识别代码分享
2017/11/07 Python
Python网络编程基于多线程实现多用户全双工聊天功能示例
2018/04/10 Python
对python中if语句的真假判断实例详解
2019/02/18 Python
基于python实现计算两组数据P值
2020/07/10 Python
如何真正的了解python装饰器
2020/08/14 Python
CSS3.0实现霓虹灯按钮动画特效的示例代码
2021/01/12 HTML / CSS
FOREO斐珞尔官方旗舰店:LUNA露娜洁面仪
2018/03/11 全球购物
小蚁科技官方商店:YI Technology
2019/08/23 全球购物
vue路由实现登录拦截
2021/03/24 Vue.js
集团薪酬管理制度
2014/01/13 职场文书
2014年全国爱牙日宣传活动方案
2014/09/21 职场文书
2015暑假假期总结
2015/07/13 职场文书
关于战胜挫折的名言警句大全!
2019/07/05 职场文书
关于python中readlines函数的参数hint的相关知识总结
2021/06/24 Python
Python实现列表拼接和去重的三种方式
2021/07/02 Python