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 5昨天隆重推出--PHP 5/Zend Engine 2.0新特性
Oct 09 PHP
PHP新手上路(六)
Oct 09 PHP
PHP 中dirname(_file_)讲解
Mar 18 PHP
PHP面向对象分析设计的经验原则
Sep 20 PHP
PHP迅雷、快车、旋风下载专用链转换代码
Jun 15 PHP
php在线代理转向代码
May 05 PHP
php strrpos()与strripos()函数
Aug 31 PHP
PHP采集类snoopy详细介绍(snoopy使用教程)
Jun 19 PHP
PHP基于php_imagick_st-Q8.dll实现JPG合成GIF图片的方法
Jul 11 PHP
PHP中的闭包(匿名函数)浅析
Feb 07 PHP
PHP 中提示undefined index如何解决(多种方法)
Mar 16 PHP
使用PHP免费发送定时短信的实例
Oct 24 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
投票管理程序
2006/10/09 PHP
PHP操作MongoDB时的整数问题及对策说明
2011/05/02 PHP
解析PHP实现多进程并行执行脚本
2013/06/18 PHP
php截取字符串之截取utf8或gbk编码的中英文字符串示例
2014/03/12 PHP
Laravel 4 初级教程之Pages、表单验证
2014/10/30 PHP
深入理解PHP变量的值类型和引用类型
2015/10/21 PHP
Laravel 手动开关 Eloquent 修改器的操作方法
2019/12/30 PHP
JavaScript 自动分号插入(JavaScript synat:auto semicolon insertion)
2009/11/04 Javascript
js Map List 遍历使用示例
2013/07/10 Javascript
Jquery实现图片左右自动滚动示例
2013/09/25 Javascript
js实现图片在未加载完成前显示加载中字样
2014/09/03 Javascript
javascript 原型链维护和继承详解
2014/11/26 Javascript
jQuery.holdReady()方法用法实例
2014/12/27 Javascript
js实现字符串转日期格式的方法
2015/05/20 Javascript
JavaScript中的Promise使用详解
2015/06/24 Javascript
JS表格组件BootstrapTable行内编辑解决方案x-editable
2016/09/01 Javascript
BootStrap表单宽度设置方法
2017/03/10 Javascript
Angular js 实现添加用户、修改密码、敏感字、下拉菜单的综合操作方法
2017/10/24 Javascript
如何优雅地在Node应用中进行错误异常处理
2019/11/25 Javascript
Vue如何获取数据列表展示
2019/12/11 Javascript
15分钟学会vue项目改造成SSR(小白教程)
2019/12/17 Javascript
在项目vue中使用echarts的操作步骤
2020/09/07 Javascript
[05:15]DOTA2英雄梦之声_第16期_灰烬之灵
2014/06/21 DOTA
[59:30]完美世界DOTA2联赛PWL S3 access vs LBZS 第二场 12.20
2020/12/23 DOTA
Python random模块常用方法
2014/11/03 Python
linux查找当前python解释器的位置方法
2019/02/20 Python
python文件写入write()的操作
2019/05/14 Python
python修改文件内容的3种方法详解
2019/11/15 Python
Python3开发实例之非关系型图数据库Neo4j安装方法及Python3连接操作Neo4j方法实例
2020/03/18 Python
用python获取txt文件中关键字的数量
2020/12/24 Python
关于html字符串正则判断和匹配的具体使用
2019/12/12 HTML / CSS
荣耀俄罗斯官网:HONOR俄罗斯
2020/10/31 全球购物
机修工岗位职责
2013/11/24 职场文书
2014-2015学年工作总结
2014/11/27 职场文书
2015年学生会工作总结范文
2015/03/31 职场文书
「睡美人」爱洛公主粘土人开订
2022/03/22 日漫