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动态生成静态HTML网页的代码
Mar 04 PHP
php 图片加水印与上传图片加水印php类
May 12 PHP
PHPwind整合最土系统用户同步登录实现方法
Dec 08 PHP
php中让上传的文件大小在上传前就受限制的两种解决方法
Jun 24 PHP
PHP中使用localhost连接Mysql不成功的解决方法
Aug 20 PHP
smarty模板判断数组为空的方法
Jun 10 PHP
PHP微信开发之二维码生成类
Jun 26 PHP
简单谈谈php延迟静态绑定
Jan 26 PHP
Yii2中SqlDataProvider用法示例
Sep 22 PHP
php文件上传 你真的掌握了吗
Nov 28 PHP
PHP实现随机生成水印图片功能
Mar 22 PHP
PHP ElasticSearch做搜索实例讲解
Feb 05 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扩展php_curl.dll不加载的解决方法
2013/06/26 PHP
使用php语句将数据库*.sql文件导入数据库
2014/05/05 PHP
php中Y2K38的漏洞解决方法实例分析
2014/09/22 PHP
PHP解析目录路径的3个函数总结
2014/11/18 PHP
php 时间time与日期date之间的使用详解及区别
2016/11/07 PHP
Zend Framework数据库操作方法实例总结
2016/12/11 PHP
php中访问修饰符的知识点总结
2019/01/27 PHP
php自动加载代码实例详解
2021/02/26 PHP
JS 动态加载脚本的4种方法
2009/05/05 Javascript
jquery js 获取时间差、时间格式具体代码
2013/06/05 Javascript
JavaScript中的this关键字介绍与使用实例
2013/06/21 Javascript
jQuery修改class属性和CSS样式整理
2015/01/30 Javascript
js鼠标点击图片实现随机变换图片的方法
2015/02/16 Javascript
用户代理字符串userAgent可实现的四个识别
2015/09/20 Javascript
基于BootStrap Metronic开发框架经验小结【二】列表分页处理和插件JSTree的使用
2016/05/12 Javascript
jQuery弹出窗口打开链接的实现代码
2016/12/24 Javascript
Vue.js双向绑定操作技巧(初级入门)
2016/12/27 Javascript
jQuery实现动态生成表格并为行绑定单击变色动作的方法
2017/04/17 jQuery
使用vue点击li,获取当前点击li父辈元素的属性值方法
2018/09/12 Javascript
vue实现全匹配搜索列表内容
2019/09/26 Javascript
解决vue中el-tab-pane切换的问题
2020/07/19 Javascript
ES6中的Javascript解构的实现
2020/10/30 Javascript
vue项目打包后请求地址错误/打包后跨域操作
2020/11/04 Javascript
使用python在校内发人人网状态(人人网看状态)
2014/02/19 Python
Python实现拼接多张图片的方法
2014/12/01 Python
Python的面向对象思想分析
2015/01/14 Python
python3.6使用pickle序列化class的方法
2018/10/22 Python
python selenium firefox使用详解
2019/02/26 Python
中国领先的专业演出票务网:永乐票务
2016/08/29 全球购物
英国最大的纸工艺品商店:CraftStash
2018/12/01 全球购物
销售总监工作职责
2013/11/21 职场文书
临床护士自荐信
2014/01/31 职场文书
小学生开学感言
2014/02/28 职场文书
办公室副主任职责范本
2014/03/08 职场文书
生物科学专业毕业生求职信
2014/06/02 职场文书
2019运动会广播加油稿汇总
2019/08/21 职场文书