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中通过ADO调用Asscess数据库和COM程序
Oct 09 PHP
10个可以简化php开发过程的MySQL工具
Apr 11 PHP
PHP常用开发函数解析之数组篇[未完结]
Jul 30 PHP
PHP得到mssql的存储过程的输出参数功能实现
Nov 23 PHP
在smarty中调用php内置函数的方法
Feb 07 PHP
解析php curl_setopt 函数的相关应用及介绍
Jun 17 PHP
PHP中isset()和unset()函数的用法小结
Mar 11 PHP
php最简单的删除目录与文件实现方法
Nov 28 PHP
php+mysqli使用预处理技术进行数据库查询的方法
Jan 28 PHP
PHP传值到不同页面的三种常见方式及php和html之间传值问题
Nov 19 PHP
PHP版本升级到7.x后wordpress的一些修改及wordpress技巧
Dec 25 PHP
php while循环控制的简单实例
May 30 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边学边教》(02.Apache+PHP环境配置――下篇)
2006/12/13 PHP
解析thinkphp基本配置 convention.php
2013/06/18 PHP
在wamp集成环境下升级php版本(实现方法)
2013/07/01 PHP
Yii获取当前url和域名的方法
2015/06/08 PHP
HTA版JSMin(省略修饰语若干)基于javascript语言编写
2009/12/24 Javascript
js中判断文本框是否为空的两种方法
2011/07/31 Javascript
使用GruntJS构建Web程序之构建篇
2014/06/04 Javascript
asp.net+js实现金额格式化
2015/02/27 Javascript
JavaScript获取伪元素(Pseudo-Element)属性的方法技巧
2015/03/13 Javascript
AngularJS中的API(接口)简单实现
2016/07/28 Javascript
微信小程序  modal弹框组件详解
2016/10/27 Javascript
详解js的六大数据类型
2016/12/27 Javascript
Vue插件写、用详解(附demo)
2017/03/20 Javascript
Vuejs入门教程之Vue生命周期,数据,手动挂载,指令,过滤器
2017/04/19 Javascript
微信小程序封装http访问网络库实例代码
2017/05/24 Javascript
ComboBox(下拉列表框)通过url加载调用远程数据的方法
2017/08/06 Javascript
Bootstrap实现下拉菜单多级联动
2017/11/23 Javascript
基于vue cli 通过命令行传参实现多环境配置
2018/07/12 Javascript
JavaScript插入排序算法原理与实现方法示例
2018/08/06 Javascript
使用nodejs实现JSON文件自动转Excel的工具(推荐)
2020/06/24 NodeJs
python虚拟环境virtualenv的使用教程
2017/10/20 Python
Python列表对象实现原理详解
2019/07/01 Python
Python Django中的STATIC_URL 设置和使用方式
2020/03/27 Python
深入浅析pycharm中 Make available to all projects的含义
2020/09/15 Python
Troy-Bilt官网:草坪割草机、吹雪机、分蘖机等
2019/02/19 全球购物
三陽商会官方网站:Sanyo iStore
2019/05/15 全球购物
初中地理教学反思
2014/01/11 职场文书
优秀校长事迹材料
2014/12/24 职场文书
电视新闻稿
2015/07/17 职场文书
Nginx反爬虫策略,防止UA抓取网站
2021/03/31 Servers
python 爬取京东指定商品评论并进行情感分析
2021/05/27 Python
Python自动化测试PO模型封装过程详解
2021/06/22 Python
python中Matplotlib绘制直线的实例代码
2021/07/04 Python
Vue鼠标滚轮滚动切换路由效果的实现方法
2021/08/04 Vue.js
聊聊基于pytorch实现Resnet对本地数据集的训练问题
2022/03/25 Python
Nginx报错104:Connection reset by peer问题的解决及分析
2022/07/23 Servers