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 相关文章推荐
使用 MySQL Date/Time 类型
Mar 26 PHP
php 在线打包_支持子目录
Jun 28 PHP
php split汉字
Jun 05 PHP
php面向对象全攻略 (十一)__toString()用法 克隆对象 __call处理调用错误
Sep 30 PHP
php session和cookie使用说明
Apr 07 PHP
VIM中设置php自动缩进为4个空格的方法详解
Jun 14 PHP
PHP使用CURL获取302跳转后的地址实例
May 04 PHP
帝国cms常用标签汇总
Jul 06 PHP
yii2.0实现创建简单widgets示例
Jul 18 PHP
php基于协程实现异步的方法分析
Jul 17 PHP
thinkphp5.1框架中容器(Container)和门面(Facade)的实现方法分析
Aug 05 PHP
phpstorm激活码2020附使用详细教程
Sep 25 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小经验:解析preg_match与preg_match_all 函数
2013/06/29 PHP
thinkPHP5.0框架自动加载机制分析
2017/03/18 PHP
JavaScript事件列表解说
2006/12/22 Javascript
NodeJS Express框架中处理404页面一个方式
2014/05/28 NodeJs
JS实现判断滚动条滚到页面底部并执行事件的方法
2014/12/18 Javascript
利用AngularJs实现京东首页轮播图效果
2016/09/08 Javascript
微信小程序 location API接口详解及实例代码
2016/10/12 Javascript
微信小程序 详解Page中data数据操作和函数调用
2017/01/12 Javascript
基于vue的换肤功能的示例代码
2017/10/10 Javascript
还不懂递归?读完这篇文章保证你会懂
2018/07/29 Javascript
使用vue-router在Vue页面之间传递数据的方法
2019/07/15 Javascript
Python实现冒泡,插入,选择排序简单实例
2014/08/18 Python
python写入xml文件的方法
2015/05/08 Python
PyCharm安装第三方库如Requests的图文教程
2018/05/18 Python
pycharm 主题theme设置调整仿sublime的方法
2018/05/23 Python
django反向解析URL和URL命名空间的方法
2018/06/05 Python
python3爬虫之设计签名小程序
2018/06/19 Python
Django web框架使用url path name详解
2019/04/29 Python
Python单元测试工具doctest和unittest使用解析
2019/09/02 Python
python通过SSH登陆linux并操作的实现
2019/10/10 Python
基于python3实现倒叙字符串
2020/02/18 Python
Django URL参数Template反向解析
2020/11/24 Python
欧洲最大的球衣网上商店:Kitbag
2017/11/11 全球购物
保加利亚运动鞋购物网站:SneakerStudio.bg
2020/12/23 全球购物
随机分配座位,共50个学生,使学号相邻的同学座位不能相邻
2014/01/18 面试题
Laravel的加密解密与哈希实例讲解
2021/03/24 PHP
测绘工程系学生的自我评价
2013/11/30 职场文书
少先队入队活动方案
2014/02/08 职场文书
运动会演讲稿200字
2014/08/25 职场文书
流动人口婚育证明
2014/10/19 职场文书
高考升学宴答谢词
2015/01/20 职场文书
中学生自我评价范文
2015/03/03 职场文书
质量承诺书格式范文
2015/04/28 职场文书
大学入学感言
2015/08/01 职场文书
PostgreSQL事务回卷实战案例详析
2022/03/25 PostgreSQL
python基础之//、/与%的区别详解
2022/06/10 Python