这篇文章主要介绍了PHP简单实现单点登录功能,结合实例形式分析了php基于session控制实现单点登录的相关操作技巧,需要的朋友可以参考下

本文实例讲述了PHP简单实现单点登录功能。分享给大家供大家参考,具体如下:

1.准备两个虚拟域名

127.0.0.1 www.openpoor.com

127.0.0.1 www.myspace.com

2.在openpoor的根目录下创建以下文件

index.PHP

session_start();

?>

sync login

hello,游客;请先登录进入空间

hello,<?php echo $_SESSION['username']; ?>;进入空间

home

login.php

session_start();

if(!empty($_POST['username'])){

require '../Des.php';

$_SESSION['username'] = $_POST['username'];

$redirect = 'http://www.openpoor.com/index.php';

header('Location:http://www.openpoor.com/sync.php?redirect='.urlencode($redirect).'&code='.Des::encrypt($_POST['username'],'openpoor'));exit;

}

?>

sync login

sync.php

$redirect = empty($_GET['redirect']) ? 'www.openpoor.com' : $_GET['redirect'];

if(empty($_GET['code'])){

header('Loaction:http://'.urldecode($redirect));

exit;

}

$apps = array(

'www.myspace.com/slogin.php'

);

?>

passport

window.οnlοad=function(){

location.replace('<?php echo $redirect; ?>');

}

3.在myspace的根目录下创建如下文件

slogin文件 完成session的设置

session_start();

header('Content-Type:text/javascript; charset=utf-8');

if(!empty($_GET['code'])){

require '../Des.php';

$username = Des::decrypt($_GET['code'],'openpoor');

if(!empty($username)){

header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"');

$_SESSION['username'] = $username;

}

}

?>

index.php

session_start();

if(!empty($_SESSION['username']))

{

echo "欢迎来到".$_SESSION['username']."的空间";

}else{

echo "请先登录";

}

?>

4.Des.php的文件内容如下

/**

*@see Yii CSecurityManager;

*/

class Des{

public static function encrypt($data,$key){

$module=mcrypt_module_open('des','', MCRYPT_MODE_CBC,'');

$key=substr(md5($key),0,mcrypt_enc_get_key_size($module));

srand();

$iv=mcrypt_create_iv(mcrypt_enc_get_iv_size($module), MCRYPT_RAND);

mcrypt_generic_init($module,$key,$iv);

$encrypted=$iv.mcrypt_generic($module,$data);

mcrypt_generic_deinit($module);

mcrypt_module_close($module);

return md5($data).'_'.base64_encode($encrypted);

}

public static function decrypt($data,$key){

$_data = explode('_',$data,2);

if(count($_data)<2){

return false;

}

$data = base64_decode($_data[1]);

$module=mcrypt_module_open('des','', MCRYPT_MODE_CBC,'');

$key=substr(md5($key),0,mcrypt_enc_get_key_size($module));

$ivSize=mcrypt_enc_get_iv_size($module);

$iv=substr($data,0,$ivSize);

mcrypt_generic_init($module,$key,$iv);

$decrypted=mdecrypt_generic($module,substr($data,$ivSize,strlen($data)));

mcrypt_generic_deinit($module);

mcrypt_module_close($module);

$decrypted = rtrim($decrypted,"\0");

if($_data[0]!=md5($decrypted)){

return false;

}

return $decrypted;

}

}

?>

当在openpoor登录后将session信息传到其他域名下的文件下进行处理,以script标签包含的形式进行运行。

5.此时访问www.openpoor.com和www.myspace.com都是未登录状态

登录后两个域名下都是登录状态

到此我们实现了一个简单的单点登录。

以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!

相关推荐:

php简单登陆,PHP简单实现单点登录相关推荐

  1. sso登陆劫持漏洞(单点登录劫持,低危)

    正文 参考资料: 腾讯单点登录系统跨域劫持漏洞 https://lvwei.me/passport.html#toc_8 sso单点登陆,用户一次登陆,所有系统都可访问. sso设计目的是简化登陆方式 ...

  2. 登陆模块之JWT单点登录

    功能描述:通过一次登录来实现多个模块之间来回跳转,数据同步 单点登录的实现方式 redis实现session共享 jwt单点登录 cas单点登录 买单点登录服务器 本篇博客着重讲解JWT单点登录 首先 ...

  3. 单点登录系统和CAS的简介

    什么是单点登录? 单点登录(Single Sign On),简称为SSO,是目前比较流行的企业业务整合的解决方案之一.SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统 ...

  4. cas登录成功什么意思_单点登录系统和CAS的简介

    ---恢复内容开始--- 什么是单点登录? 单点登录(Single Sign On),简称为SSO,是目前比较流行的企业业务整合的解决方案之一.SSO的定义是在多个应用系统中,用户只需要登录一次就可以 ...

  5. Web应用跨域访问及单点登录解决方案汇总

    做过跨越多个网站的Ajax开发的朋友都知道,如果在A网站中,我们希望使用Ajax来获得B网站中的特定内容,如果A网站与B网站不在同一个域中,那么就出现了跨域访问问题.Ajax的跨域访问问题是现有的Aj ...

  6. SSO单点登录学习总结(2)——基于Cookie+fliter单点登录实例

    1.使用Cookie解决单点登录 技术点: 1.设置Cookie的路径为setPath("/").即Tomcat的目录下都有效 2.设置Cookie的域setDomain(&quo ...

  7. .net单点登录demo_图文并茂,为你揭开“单点登录“的神秘面纱

    本文首发于政采云前端团队博客:图文并茂,为你揭开"单点登录"的神秘面纱 https://www.zoo.team/article/sso 概念 单点登录( Single Sign ...

  8. html5实现单点登录,图文并茂,为你揭开“单点登录“的神秘面纱

    概念 单点登录( Single Sign On ,简称 SSO),是目前比较流行的企业业务整合的解决方案之一,用于多个应用系统间,用户只需要登录一次就可以访问所有相互信任的应用系统. 前置介绍 同源策 ...

  9. SSO单点登录详解-------二、单点登录流程解析

    一.简介 单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一.SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统. 二 ...

  10. LiveGBS国标视频平台GB28181协议支持CAS单点登录快速对接业务系统

    LiveGBS国标视频平台GB28181协议支持CAS单点登录快速对接业务系统 1.如何配置CAS单点登陆 2.单点登录调整测试 3.搭建GB28181视频直播平台 1.如何配置CAS单点登陆 Liv ...

最新文章

  1. python词频云图_python安娜卡列妮娜词云图制作
  2. 计算机网络最提出的优点是什么,2013年计算机一级B考试模拟试题十八及答案解析...
  3. idea每次新建项目都要重新配置maven
  4. 018_SpringBoot异常处理方式-ExceptionHandle注解处理异常
  5. JavaScript面向对象编程笔记
  6. 使用Excel导入数据到SAP Cloud for Customer系统
  7. cassandra生产监控_碎玻璃:诊断生产Cassandra问题
  8. textract安装使用
  9. 美观的导航菜单 -- JQuery实现,支持横向, 竖向
  10. C++11 多线程线程共享数据
  11. safari调试工具h5手机_iOS通过safari真机调试H5页面
  12. javaScript学习笔记【尚硅谷】
  13. 与现代教育技术有关的计算机知识,基于计算机的现代教育技术手段的利用与开发...
  14. oTree学习教程(七)Apps rounds
  15. java 空格 separater_Java随手记
  16. pil库修改图片大小_使用PIL改变图像格式及尺寸
  17. 遇见MySQL 主从原理及问题的小tips
  18. tlc2543 多通道选择 错误
  19. History(查看历史命令)的用法
  20. linux版的百度云怎么样,有些人用Linux版百度网盘不限速,有些则速度很慢

热门文章

  1. 绝不在构造/析构函数中使用虚函数
  2. 接入HTTPS,给网站加一把绿色小锁
  3. Paypal 在线支付接口应用从零开始,第1节,[建立沙盒测试环境]
  4. Flutter Card组件
  5. 每周更新:React UI 库、WebStorm 2019.1.1、PaySDK v2.0.1和Spring Boot 2.2 第二个里程碑 M2等更新发布
  6. 求1000以内的素数c语言程序设计,C语言程序设计报告 C 实验名称 计算并输出1000以内最大的10个素数以及它们的和.doc...
  7. java 静态变量锁_线程中锁方法和静态变量的锁
  8. python名称空间_一篇文章搞懂Python的类与对象名称空间
  9. 安全提示:IIS不要开启“WebDAV”扩展
  10. C# 查询集合中某个元素里的值