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程序中的常见漏洞进行攻击
Oct 09 PHP
用php写的serv-u的web申请账号的程序
Oct 09 PHP
php循环检测目录是否存在并创建(循环创建目录)
Jan 06 PHP
php中判断字符串是否全是中文或含有中文的实现代码
Sep 16 PHP
php中curl、fsocket、file_get_content三个函数的使用比较
May 09 PHP
php批量删除cookie的简单实现方法
Jan 26 PHP
php计算两个坐标(经度,纬度)之间距离的方法
Apr 17 PHP
php实现上传图片文件代码
Jul 19 PHP
PHP传值到不同页面的三种常见方式及php和html之间传值问题
Nov 19 PHP
PHP制作登录异常ip检测功能的实例代码
Nov 16 PHP
PHP使用DOM和simplexml读取xml文档的方法示例
Feb 08 PHP
PHP编程获取各个时间段具体时间的方法
May 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下使用SMTP发邮件的代码
2008/01/10 PHP
PHP 面向对象实现代码
2009/11/11 PHP
PHP 全角转半角实现代码
2010/05/16 PHP
浅谈PHP强制类型转换,慎用!
2013/06/06 PHP
php中利用explode函数分割字符串到数组
2014/02/08 PHP
php中实现记住密码下次自动登录的例子
2014/11/06 PHP
PHP Smarty模版简单使用方法
2016/03/30 PHP
PHP判断数组是否为空的常用方法(五种方法)
2017/02/08 PHP
jQuery中document与window以及load与ready 区别详解
2014/12/29 Javascript
JQuery显示隐藏页面元素的方法总结
2015/04/16 Javascript
JavaScript进阶练习及简单实例分析
2016/06/03 Javascript
jquery实现图片轮播器
2017/05/23 jQuery
vue2 前端搜索实现示例
2018/02/26 Javascript
Webpack path与publicPath的区别详解
2018/05/03 Javascript
Nuxt升级2.0.0时出现的问题(小结)
2018/10/08 Javascript
产制造追溯系统之通过微信小程序实现移动端报表平台
2019/06/03 Javascript
electron 如何将任意资源打包的方法步骤
2020/04/16 Javascript
OpenLayers3实现鼠标移动显示坐标
2020/09/25 Javascript
python遍历 truple list dictionary的几种方法总结
2016/09/11 Python
Python使用matplotlib简单绘图示例
2018/02/01 Python
Python中生成器和迭代器的区别详解
2018/02/10 Python
python3 requests中使用ip代理池随机生成ip的实例
2018/05/07 Python
python爬取网易云音乐评论
2018/11/16 Python
对sklearn的使用之数据集的拆分与训练详解(python3.6)
2018/12/14 Python
pyqt5 comboBox获得下标、文本和事件选中函数的方法
2019/06/14 Python
PyQt QCombobox设置行高的方法
2019/06/20 Python
Python DataFrame一列拆成多列以及一行拆成多行
2019/08/06 Python
中国跨境海淘网站:考拉海购
2016/08/01 全球购物
尤妮佳moony海外旗舰店:日本殿堂级纸尿裤品牌
2018/02/23 全球购物
教师节促销方案
2014/03/22 职场文书
政治学求职信
2014/06/03 职场文书
设计大赛策划方案
2014/06/13 职场文书
简易版租房协议书范本
2014/10/13 职场文书
离婚起诉书范文2016
2015/11/26 职场文书
2016年校园社会综合治理宣传月活动总结
2016/03/16 职场文书
实例讲解Python中sys.argv[]的用法
2021/06/03 Python