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 相关文章推荐
图书管理程序(一)
Oct 09 PHP
PHP Token(令牌)设计
Mar 15 PHP
ThinkPHP2.0读取MSSQL提示Incorrect syntax near the keyword 'AS'的解决方法
Jun 25 PHP
php中实现记住密码下次自动登录的例子
Nov 06 PHP
php多次include后导致全局变量global失效的解决方法
Feb 28 PHP
php计算两个文件相对路径的方法
Mar 14 PHP
php实现编辑和保存文件的方法
Jul 20 PHP
详解WordPress开发中用于获取分类及子页面的函数用法
Jan 08 PHP
Zend Framework教程之连接数据库并执行增删查的方法(附demo源码下载)
Mar 21 PHP
php 二维数组时间排序实现代码
Nov 19 PHP
PHP删除二维数组中相同元素及数组重复值的方法示例
May 05 PHP
php高性能日志系统 seaslog 的安装与使用方法分析
Feb 29 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转成EXE文件
2006/10/09 PHP
php 邮件发送问题解决
2014/03/22 PHP
Javascript hasOwnProperty 方法 &amp; in 关键字
2008/11/26 Javascript
动态加载图片路径 保持JavaScript控件的相对独立性
2010/09/03 Javascript
Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结
2013/11/14 Javascript
jQuery实现tag便签去重效果的方法
2015/01/20 Javascript
浅谈javascript面向对象程序设计
2015/01/21 Javascript
jQuery手机浏览器中拖拽动作的艰难性分析
2015/02/04 Javascript
纯jquery实现模仿淘宝购物车结算
2015/08/20 Javascript
JavaScript实现cookie的写入、读取、删除功能
2015/11/05 Javascript
原生js实现网页顶部自动下拉/收缩广告效果
2017/01/20 Javascript
解决淘宝cnpm 安装后cnpm不是内部或外部命令的问题
2018/05/17 Javascript
微信小程序如何利用getCurrentPages进行页面传值
2019/07/01 Javascript
详解利用nodejs对本地json文件进行增删改查
2019/09/20 NodeJs
JavaScript实现抖音罗盘时钟
2019/10/11 Javascript
Angular 多级路由实现登录页面跳转(小白教程)
2019/11/19 Javascript
node.JS路径解析之PATH模块使用方法详解
2020/02/06 Javascript
深入了解Vue.js 混入(mixins)
2020/07/23 Javascript
python装饰器使用方法实例
2013/11/21 Python
python实现查询IP地址所在地
2015/03/29 Python
Python3.5模块的定义、导入、优化操作图文详解
2019/04/27 Python
基于腾讯云服务器部署微信小程序后台服务(Python+Django)
2019/05/08 Python
在vscode中配置python环境过程解析
2019/09/28 Python
Django多数据库配置及逆向生成model教程
2020/03/28 Python
详解CSS3新增的背景属性
2019/12/25 HTML / CSS
CSS3实现莲花绽放的动画效果
2020/11/06 HTML / CSS
英国国家美术馆商店:National Gallery
2019/05/01 全球购物
临时用工协议书范本
2014/10/29 职场文书
政风行风整改报告
2014/11/06 职场文书
幼儿园中班教师个人工作总结
2015/02/06 职场文书
幼师求职自荐信
2015/03/26 职场文书
结婚堵门保证书
2015/05/08 职场文书
小学四年级作文之写景
2019/08/23 职场文书
Python实现列表拼接和去重的三种方式
2021/07/02 Python
Vue3.0 手写放大镜效果
2021/07/25 Vue.js
继承Win10缺点!教你关闭Win11烦人的网络搜索
2021/11/23 数码科技