php简单登陆,PHP简单实现单点登录
这篇文章主要介绍了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简单实现单点登录相关推荐
- sso登陆劫持漏洞(单点登录劫持,低危)
正文 参考资料: 腾讯单点登录系统跨域劫持漏洞 https://lvwei.me/passport.html#toc_8 sso单点登陆,用户一次登陆,所有系统都可访问. sso设计目的是简化登陆方式 ...
- 登陆模块之JWT单点登录
功能描述:通过一次登录来实现多个模块之间来回跳转,数据同步 单点登录的实现方式 redis实现session共享 jwt单点登录 cas单点登录 买单点登录服务器 本篇博客着重讲解JWT单点登录 首先 ...
- 单点登录系统和CAS的简介
什么是单点登录? 单点登录(Single Sign On),简称为SSO,是目前比较流行的企业业务整合的解决方案之一.SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统 ...
- cas登录成功什么意思_单点登录系统和CAS的简介
---恢复内容开始--- 什么是单点登录? 单点登录(Single Sign On),简称为SSO,是目前比较流行的企业业务整合的解决方案之一.SSO的定义是在多个应用系统中,用户只需要登录一次就可以 ...
- Web应用跨域访问及单点登录解决方案汇总
做过跨越多个网站的Ajax开发的朋友都知道,如果在A网站中,我们希望使用Ajax来获得B网站中的特定内容,如果A网站与B网站不在同一个域中,那么就出现了跨域访问问题.Ajax的跨域访问问题是现有的Aj ...
- SSO单点登录学习总结(2)——基于Cookie+fliter单点登录实例
1.使用Cookie解决单点登录 技术点: 1.设置Cookie的路径为setPath("/").即Tomcat的目录下都有效 2.设置Cookie的域setDomain(&quo ...
- .net单点登录demo_图文并茂,为你揭开“单点登录“的神秘面纱
本文首发于政采云前端团队博客:图文并茂,为你揭开"单点登录"的神秘面纱 https://www.zoo.team/article/sso 概念 单点登录( Single Sign ...
- html5实现单点登录,图文并茂,为你揭开“单点登录“的神秘面纱
概念 单点登录( Single Sign On ,简称 SSO),是目前比较流行的企业业务整合的解决方案之一,用于多个应用系统间,用户只需要登录一次就可以访问所有相互信任的应用系统. 前置介绍 同源策 ...
- SSO单点登录详解-------二、单点登录流程解析
一.简介 单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一.SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统. 二 ...
- LiveGBS国标视频平台GB28181协议支持CAS单点登录快速对接业务系统
LiveGBS国标视频平台GB28181协议支持CAS单点登录快速对接业务系统 1.如何配置CAS单点登陆 2.单点登录调整测试 3.搭建GB28181视频直播平台 1.如何配置CAS单点登陆 Liv ...
最新文章
- python词频云图_python安娜卡列妮娜词云图制作
- 计算机网络最提出的优点是什么,2013年计算机一级B考试模拟试题十八及答案解析...
- idea每次新建项目都要重新配置maven
- 018_SpringBoot异常处理方式-ExceptionHandle注解处理异常
- JavaScript面向对象编程笔记
- 使用Excel导入数据到SAP Cloud for Customer系统
- cassandra生产监控_碎玻璃:诊断生产Cassandra问题
- textract安装使用
- 美观的导航菜单 -- JQuery实现,支持横向, 竖向
- C++11 多线程线程共享数据
- safari调试工具h5手机_iOS通过safari真机调试H5页面
- javaScript学习笔记【尚硅谷】
- 与现代教育技术有关的计算机知识,基于计算机的现代教育技术手段的利用与开发...
- oTree学习教程(七)Apps rounds
- java 空格 separater_Java随手记
- pil库修改图片大小_使用PIL改变图像格式及尺寸
- 遇见MySQL 主从原理及问题的小tips
- tlc2543 多通道选择 错误
- History(查看历史命令)的用法
- linux版的百度云怎么样,有些人用Linux版百度网盘不限速,有些则速度很慢
热门文章
- 绝不在构造/析构函数中使用虚函数
- 接入HTTPS,给网站加一把绿色小锁
- Paypal 在线支付接口应用从零开始,第1节,[建立沙盒测试环境]
- Flutter Card组件
- 每周更新:React UI 库、WebStorm 2019.1.1、PaySDK v2.0.1和Spring Boot 2.2 第二个里程碑 M2等更新发布
- 求1000以内的素数c语言程序设计,C语言程序设计报告 C 实验名称 计算并输出1000以内最大的10个素数以及它们的和.doc...
- java 静态变量锁_线程中锁方法和静态变量的锁
- python名称空间_一篇文章搞懂Python的类与对象名称空间
- 安全提示:IIS不要开启“WebDAV”扩展
- C# 查询集合中某个元素里的值