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 防止单引号,双引号在接受页面转义
Jul 10 PHP
PHP 文件类型判断代码
Mar 13 PHP
php长字符串定义方法
Jul 12 PHP
使用PHP求两个文件的相对路径
Jun 20 PHP
php获取随机数组列表的方法
Nov 13 PHP
smarty模板引擎之配置文件数据和保留数据
Mar 30 PHP
如何在HTML 中嵌入 PHP 代码
May 13 PHP
Thinkphp自定义代码生成工具及用法说明(附下载地址)
May 27 PHP
php 使用curl模拟登录人人(校内)网的简单实例
Jun 06 PHP
php 多文件上传的实现实例
Oct 23 PHP
Ajax+PHP实现的模拟进度条功能示例
Feb 11 PHP
laravel 使用auth编写登录的方法
Sep 30 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
2019十大人气国漫
2020/03/13 国漫
php中jQuery插件autocomplate的简单使用笔记
2012/06/14 PHP
一个简单且很好用的php分页类
2013/10/26 PHP
php初始化对象和析构函数的简单实例
2014/03/11 PHP
详解WordPress中提醒安装插件以及隐藏插件的功能实现
2015/12/25 PHP
PHP在线调试执行的实现方法(附demo源码)
2016/04/28 PHP
Yii全局函数用法示例
2017/01/22 PHP
Laravel框架Blade模板简介及模板继承用法分析
2019/12/03 PHP
extjs 列表框(multiselect)的动态添加列表项的方法
2009/07/31 Javascript
浅谈javascript中的作用域
2012/04/07 Javascript
使用百度地图api实现根据地址查询经纬度
2014/12/11 Javascript
Backbone.js 0.9.2 源码注释中文翻译版
2015/06/25 Javascript
使用jspdf生成pdf报表
2015/07/03 Javascript
JS+DIV+CSS排版布局实现美观的选项卡效果
2015/10/10 Javascript
jQuery通过deferred对象管理ajax异步
2016/05/20 Javascript
JS表格组件BootstrapTable行内编辑解决方案x-editable
2016/09/01 Javascript
原生JS取代一些JQuery方法的简单实现
2016/09/20 Javascript
React Native第三方平台分享的实例(Android,IOS双平台)
2017/08/04 Javascript
Node.JS 循环递归复制文件夹目录及其子文件夹下的所有文件
2017/09/18 Javascript
vue项目中使用axios上传图片等文件操作
2017/11/02 Javascript
基于VuePress 轻量级静态网站生成器的实现方法
2018/04/17 Javascript
傻瓜式解读koa中间件处理模块koa-compose的使用
2018/10/30 Javascript
JavaScript设计模式之享元模式实例详解
2019/01/17 Javascript
python re模块findall()函数实例解析
2018/01/19 Python
Python 移动光标位置的方法
2019/01/20 Python
django中SMTP发送邮件配置详解
2019/07/19 Python
Python实现Singleton模式的方式详解
2019/08/08 Python
pyqt5中动画的使用详解
2020/04/01 Python
丝绸和人造花卉、植物和树木:Nearly Natural
2018/11/28 全球购物
毕业生精彩的自我评价分享
2013/10/06 职场文书
食品行业求职人的自我评价
2014/01/19 职场文书
家庭教育先进个人事迹材料
2014/01/24 职场文书
志愿者宣传口号
2014/06/17 职场文书
促销活动总结模板
2014/07/01 职场文书
支部书记四风对照材料
2014/08/28 职场文书
Java 语言中Object 类和System 类详解
2021/07/07 Java/Android