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计划任务、定时执行任务的实现代码
Apr 23 PHP
PHP无刷新上传文件实现代码
Sep 19 PHP
php利用iframe实现无刷新文件上传功能的代码
Sep 29 PHP
基于php验证码函数的使用示例
May 03 PHP
CodeIgniter框架数据库事务处理的设计缺陷和解决方案
Jul 25 PHP
php在数组中查找指定值的方法
Mar 17 PHP
PHP Curl模拟登录微信公众平台、新浪微博实例代码
Jan 28 PHP
header与缓冲区之间的深层次分析
Jul 30 PHP
php常用字符函数实例小结
Dec 29 PHP
PHP的curl函数的用法总结
Feb 14 PHP
laravel excel 上传文件保存到本地服务器功能
Nov 14 PHP
PHP开发api接口安全验证操作实例详解
Mar 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
PHP获取网址的顶级域名函数代码
2012/09/24 PHP
Laravel 5框架学习之Eloquent (laravel 的ORM)
2015/04/08 PHP
php简单实现文件或图片强制下载的方法
2016/12/06 PHP
PHP实现微信提现功能(微信商城)
2019/11/21 PHP
javascript 回到顶部效果的实现代码
2014/02/17 Javascript
JavaScript中的异常捕捉介绍
2014/12/31 Javascript
浅谈javascript中自定义模版
2015/01/29 Javascript
js计算时间差代码【包括计算,天,时,分,秒】
2016/04/26 Javascript
AngularJS中比较两个数组是否相同
2016/08/24 Javascript
js实现HashTable(哈希表)的实例分析
2016/11/21 Javascript
jQuery在header中设置请求信息的方法
2017/03/06 Javascript
用JS实现简单的登录验证功能
2017/07/28 Javascript
vue实现留言板todolist功能
2017/08/16 Javascript
javascript中new Array()和var arr=[]用法区别
2017/12/01 Javascript
Javascript中JSON数据分组优化实践及JS操作JSON总结
2017/12/22 Javascript
使用Vue开发一个实时性时间转换指令
2018/01/17 Javascript
使用JavaScript解析URL的方法示例
2019/03/01 Javascript
详解50行代码,Node爬虫练手项目
2019/04/22 Javascript
微信小程序实现上传多个文件 超过10个
2020/03/30 Javascript
vue实现简单跑马灯效果
2020/05/25 Javascript
如何用Python来理一理红楼梦里的那些关系
2019/08/14 Python
numpy按列连接两个维数不同的数组方式
2019/12/06 Python
python使用配置文件过程详解
2019/12/28 Python
推荐8款常用的Python GUI图形界面开发框架
2020/02/23 Python
Python3标准库之threading进程中管理并发操作方法
2020/03/30 Python
HTML里显示pdf、word、xls、ppt的方法示例
2020/04/14 HTML / CSS
新西兰领先的内衣店:Bendon Lingerie新西兰
2018/07/11 全球购物
小型女装店的创业计划书
2014/01/09 职场文书
2015年元旦文艺汇演主持词
2014/03/26 职场文书
竞选宣传委员演讲稿
2014/05/24 职场文书
农业生产宣传标语
2014/10/08 职场文书
党员评议思想汇报
2014/10/08 职场文书
2015年政府采购工作总结
2015/05/21 职场文书
幼儿园庆六一主持词
2015/06/30 职场文书
Go标准容器之Ring的使用说明
2021/05/05 Golang
MySQL中的 inner join 和 left join的区别解析(小结果集驱动大结果集)
2023/05/08 MySQL