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 相关文章推荐
BBS(php &amp; mysql)完整版(四)
Oct 09 PHP
PHP备份数据库生成SQL文件并下载的函数代码
Feb 05 PHP
深入理解PHP之数组(遍历顺序)  Laruence原创
Jun 13 PHP
基于php 随机数的深入理解
Jun 05 PHP
主流PHP框架的优缺点对比分析
Dec 25 PHP
PHP排序算法类实例
Jun 17 PHP
PHP实现多文件上传的方法
Jul 08 PHP
PHP实现的蚂蚁爬杆路径算法代码
Dec 03 PHP
PHP函数shuffle()取数组若干个随机元素的方法分析
Apr 02 PHP
php写一个函数,实现扫描并打印出自定目录下(含子目录)所有jpg文件名
May 26 PHP
php使用gearman进行任务分发操作实例详解
Feb 26 PHP
yii框架结合charjs实现统计30天数据的方法
Apr 04 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 substr 截取字符串出现乱码问题解决方法[utf8与gb2312]
2011/12/16 PHP
CI框架整合widget(页面格局)的方法
2016/05/17 PHP
PHP查找一列有序数组是否包含某值的方法
2020/02/07 PHP
php变量与字符串的增删改查操作示例
2020/05/07 PHP
jquery插件jbox使用iframe关闭问题
2009/02/09 Javascript
鼠标滑上去后图片放大浮出效果的js代码
2011/05/28 Javascript
js循环改变div颜色具体方法
2013/06/25 Javascript
jquery选择器之内容过滤选择器详解
2014/01/27 Javascript
JavaScript String(字符串)对象的简单实例(推荐)
2016/08/31 Javascript
微信小程序 数组(增,删,改,查)等操作实例详解
2017/01/05 Javascript
你不知道的 javascript【推荐】
2017/01/08 Javascript
全面解析Node.js 8 重要功能和修复
2017/06/02 Javascript
Grunt针对静态文件的压缩,版本控制打包的实例讲解
2017/09/29 Javascript
详解Vue如何支持JSX语法
2017/11/10 Javascript
Vue Router去掉url中默认的锚点#
2018/08/01 Javascript
vue-cli3 配置开发与测试环境详解
2019/05/17 Javascript
vue实现登录页面的验证码以及验证过程解析(面向新手)
2019/08/02 Javascript
原生js实现商品筛选功能
2019/10/28 Javascript
[02:10]DOTA2亚洲邀请赛 EG战队出场宣传片
2015/02/07 DOTA
[01:00:53]OG vs IG 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python自动化构建工具scons使用入门笔记
2015/03/10 Python
收藏整理的一些Python常用方法和技巧
2015/05/18 Python
Flask框架通过Flask_login实现用户登录功能示例
2018/07/17 Python
Python 实例方法、类方法、静态方法的区别与作用
2019/08/14 Python
简单了解python装饰器原理及使用方法
2019/12/18 Python
Python文本文件的合并操作方法代码实例
2020/03/31 Python
KIKO比利时官网:意大利彩妆品牌
2017/07/23 全球购物
JD Sports马来西亚:英国领先的运动鞋和运动服饰零售商
2018/03/13 全球购物
体育节口号
2014/06/19 职场文书
批评与自我批评范文
2014/10/15 职场文书
乡镇党建工作汇报材料
2014/10/27 职场文书
2015婚礼主持词开场白
2015/05/28 职场文书
党员反腐倡廉学习心得体会
2015/08/15 职场文书
PHP实现考试倒计时功能代码
2021/04/16 PHP
总结Pyinstaller打包的高级用法
2021/06/28 Python
Rust 连接 PostgreSQL 数据库的详细过程
2022/01/22 PostgreSQL