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中的字符串函数
Nov 24 PHP
PHP字符串 ==比较运算符的副作用
Oct 21 PHP
php基础学习之变量的使用
Jun 09 PHP
PHP转换IP地址到真实地址的方法详解
Jun 09 PHP
PHP 如何利用phpexcel导入数据库
Aug 24 PHP
php解析url的三个示例
Jan 20 PHP
PHP5.5和之前的版本empty函数的不同之处
Jun 13 PHP
php微信公众开发之获取周边酒店信息的方法
Dec 22 PHP
PHP获取当前相对于域名目录的方法
Jun 26 PHP
php制作基于xml的RSS订阅源功能示例
Feb 08 PHP
php实现登录页面的简单实例
Sep 29 PHP
php7性能提升的原因详解
Oct 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.NET的入门教程
2006/10/09 PHP
浅析PHP页面局部刷新功能的实现小结
2013/06/21 PHP
PHP图片等比例缩放生成缩略图函数分享
2014/06/10 PHP
php实现简单文件下载的方法
2015/01/30 PHP
PHP实现微信网页授权开发教程
2016/01/19 PHP
javascript 装载iframe子页面,自适应高度
2009/03/20 Javascript
JavaScript改变HTML元素的样式改变CSS及元素属性
2013/11/12 Javascript
DIV始终居中的js代码
2014/02/17 Javascript
JavaScript设计模式之观察者模式(发布者-订阅者模式)
2014/09/24 Javascript
Json实现异步请求提交评论无需跳转其他页面
2014/10/11 Javascript
原生javascript获取元素样式
2014/12/31 Javascript
javascript数组去重小结
2016/03/07 Javascript
基于BootStrap的图片轮播效果展示实例代码
2016/05/23 Javascript
js中数组的常用方法小结
2016/12/30 Javascript
JavaScript基于replace+正则实现ES6的字符串模版功能
2017/04/25 Javascript
js canvas实现适用于移动端的百分比仪表盘dashboard
2017/07/18 Javascript
详解vue项目首页加载速度优化
2017/10/18 Javascript
JavaScript 数组去重并统计重复元素出现的次数实例
2017/12/14 Javascript
Vue+webpack项目基础配置教程
2018/02/12 Javascript
详解javascript 变量提升(Hoisting)
2019/03/12 Javascript
Javascript实现鼠标移入方向感知
2020/06/24 Javascript
vue 数据双向绑定的实现方法
2021/03/04 Vue.js
Python文件夹与文件的相关操作(推荐)
2016/07/25 Python
Python中enumerate()函数编写更Pythonic的循环
2018/03/06 Python
解决Spyder中图片显示太小的问题
2018/04/27 Python
python读写csv文件并增加行列的实例代码
2019/08/01 Python
Python函数参数定义及传递方式解析
2020/06/10 Python
python基于Kivy写一个图形桌面时钟程序
2021/01/28 Python
英国儿童家具专卖店:GLTC
2016/09/24 全球购物
德国婴儿服装和婴儿用品购买网站:Baby Sweets
2019/12/08 全球购物
利达恒信公司.NET笔试题面试题
2016/03/05 面试题
标准毕业生自荐信范文
2013/11/04 职场文书
会计顶岗实习心得
2014/01/25 职场文书
优秀老员工获奖感言
2014/02/15 职场文书
电子信息专业应届生自荐信
2014/06/04 职场文书
高一作文之乐趣
2019/11/21 职场文书