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文件的实现方法
Mar 19 PHP
PHP备份/还原MySQL数据库的代码
Jan 06 PHP
PHP 调试工具Debug Tools
Apr 30 PHP
解析posix与perl标准的正则表达式区别
Jun 17 PHP
php获得url参数中具有&amp;的值的方法
Mar 05 PHP
ThinkPHP模板中数组循环实例
Oct 30 PHP
PHP callback函数使用方法和注意事项
Jan 23 PHP
PHP多文件上传类实例
Mar 07 PHP
PHP开发框架laravel安装与配置教程
Mar 13 PHP
php使用APC实现实时上传进度条功能
Oct 26 PHP
详解PHP swoole process的使用方法
Aug 26 PHP
php中html_entity_decode实现HTML实体转义
Jun 13 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支付宝接口用法分析
2015/01/04 PHP
php 三大特点:封装,继承,多态
2017/02/19 PHP
php获取目录下所有文件及目录(多种方法)(推荐)
2019/05/14 PHP
Laravel 读取 config 下的数据方法
2019/10/13 PHP
javascript的函数
2007/01/31 Javascript
jquery multiSelect 多选下拉框
2010/07/09 Javascript
从零开始学习jQuery (四) jQuery中操作元素的属性与样式
2011/02/23 Javascript
JavaScript高级程序设计(第3版)学习笔记13 ECMAScript5新特性
2012/10/11 Javascript
使用CSS样式position:fixed水平滚动的方法
2014/02/19 Javascript
js与css实现弹出层覆盖整个页面的方法
2014/12/13 Javascript
JQuery导航菜单选择特效
2016/04/11 Javascript
第七章之菜单按钮图标组件
2016/04/25 Javascript
jQuery实现的自动加载页面功能示例
2016/09/04 Javascript
Node.js  事件循环详解及实例
2017/08/06 Javascript
JS计算两个时间相差分钟数的方法示例
2018/01/10 Javascript
详解swipe使用及竖屏页面滚动方法
2018/06/28 Javascript
vue2配置scss的方法步骤
2019/06/06 Javascript
JS操作字符串转数字的常见方法示例
2019/10/29 Javascript
vue项目实现图片上传功能
2019/12/23 Javascript
python TCP Socket的粘包和分包的处理详解
2018/02/09 Python
python去除文件中重复的行实例
2018/06/29 Python
python3调用百度翻译API实现实时翻译
2018/08/16 Python
python pandas时序处理相关功能详解
2019/07/03 Python
python列表每个元素同增同减和列表元素去空格的实例
2019/07/20 Python
python pillow模块使用方法详解
2019/08/30 Python
PYTHON EVAL的用法及注意事项解析
2019/09/06 Python
利用Python校准本地时间的方法教程
2019/10/31 Python
解决Python中导入自己写的类,被划红线,但不影响执行的问题
2020/07/13 Python
Python下载网易云歌单歌曲的示例代码
2020/08/12 Python
基于python实现简单C/S模式代码实例
2020/09/14 Python
python 获取计算机的网卡信息
2021/02/18 Python
信息工作经验交流材料
2014/05/28 职场文书
纪念一二九运动演讲稿
2014/09/16 职场文书
团队会宣传标语
2014/10/09 职场文书
成品仓管员岗位职责
2015/04/01 职场文书
详解如何使用Node.js实现热重载页面
2021/05/06 Javascript