首先我这里用到了redis 和 p3p技术。当然任意的nosql都可以满足

模拟的一个登陆访问的客户端。

<?php
session_start();
$get = $_GET; if($get['uname'] == 'ftt'&& $get['pass'] == '')
{
$token = md5(rand());
$_SESSION['user'] = 'ftt';
$_SESSION['islogin'] = ; save_redis($token,json_encode($_SESSION));
header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"');
$file .= '<script type="text/javascript" src="http://o3web.demo.com/P3pApi/index?token='.$token.'" reload="1"></script>';
echo $file; }
else
{
echo 'None';
} function save_redis($keys,$value)
{
try{
$_redis = new Redis();
$res = $_redis->connect('10.10.112.195','');
} catch(RedisException $e)
{
print_r($e);
} $_redis->set($keys,$value); } ?>

下面是接受的接口。

<?php

namespace _O3web\Controller;

use Think\Controller;

/*
* @desc
* @author Carey
* @time 2016年4月25日14:50:44
* @ps 用于和o3提交数据的
*/ /* p3p协议用于对o3登录用户的sesion信息获取 */
class P3pApiController extends BaseController { /* 获取p3p协议的 token标示并写入cookie中 */
public function index() {
$token = I('get.token');
header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"');
setcookie('token', $token, time()+,'/');
} }

我会在自己的需要的页面的init或者bese里面加载。

<?php
/*
* 公用控制器
* @author Carey
*/
namespace _O3web\Controller; use Think\Controller; class BaseController extends Controller { public function _initialize(){
load_ext_config('configType',FALSE); //调用配置文件
$ref = $this->set_ref();
$this->assign('ref',$ref); /* 将o3的用户登录信息 */
$userinfo = array();
if(!isset($_SESSION['userinfo']) && empty($_SESSION['userinfo'])){ //如果SESSION中没有用户信息那么通过redis获取p3ptoken中的用户信息
$userinfo = $this->P3p();
if(!empty($userinfo)){
$_SESSION['userinfo'] = $userinfo;
$this->assign('is_uid',); //如果is_uid是1那么就是登录状态
}else{
$this->assign('is_uid',); //如果is_uid是2那么就是没有登录
}
}else{
$this->assign('is_uid',); //如果is_uid是2那么就是没有登录
} } /* p3p获取o3用户登录信息 */
public function P3p(){
\Predis\Autoloader::register();
$a = new \Predis\Client();
$info = $a->get($_COOKIE['token']);
return json_decode($info,TRUE);
}

关于跨域名的信息共享P3P实例的更多相关文章

  1. 两系统用asp.net forms 身份验证方式实现跨域登录信息共享

    1.两个系统的 web.config 都配置为 forms 验证方式( system.web —> authentication 节点) 2.在两个系统的Web.config里配置相同的 sys ...

  2. 循序渐进Java Socket网络编程(多客户端、信息共享、文件传输)

    目录[-] 一.TCP/IP协议 二.TCP与UDP 三.Socket是什么 四.Java中的Socket 五.基本的Client/Server程序 六.多客户端连接服务器 七.信息共享 八.文件传输 ...

  3. 循序渐进Socket网络编程(多客户端、信息共享、文件传输)

    循序渐进Socket网络编程(多客户端.信息共享.文件传输) 前言:在最近一个即将结束的项目中使用到了Socket编程,用于调用另一系统进行处理并返回数据.故把Socket的基础知识总结梳理一遍. 1 ...

  4. 完全跨站点跨域名单点(SSO)同步登录和注销

    先来说说什么是单点登录(SSO).来自百科的介绍:SSO英文全称Single Sign On,单点登录.SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统.它包括可以将这次主 ...

  5. C#共享内存实例 附源码

    原文 C#共享内存实例 附源码 网上有C#共享内存类,不过功能太简单了,并且写内存每次都从开头写.故对此进行了改进,并做了个小例子,供需要的人参考. 主要改进点: 通过利用共享内存的一部分空间(以下称 ...

  6. JAVA Socket(多个客户同时连接,信息共享) client (java/ruby)

    第一步 充分理解Socket 1.什么是socket 所谓socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄.应用程序通常通过"套接字" ...

  7. [php-cookie] cookie 请求跨域,如何共享

    cookie 请求跨域的问题, 假设我有两个域名,一个 m.example.com,另一个是 www.example.com . 那么我需要如何设置 cookie 才可以在这两个域名都实现共享呢? / ...

  8. Tomcat实现多域名之间session共享

    最近启用二级域名后,面临一个主域名与二级域名之间 session 不能共享的问题,带来的麻烦就是用户在主域名登陆,但由于二级域名 session 不能共享 ,因此无法进行登陆的操作,对一些功能有一些影 ...

  9. linux nslookup-查询域名DNS信息的工具

    博主推荐:更多网络测试相关命令关注 网络测试  收藏linux命令大全 nslookup命令是常用域名查询工具,就是查DNS信息用的命令. nslookup4有两种工作模式,即“交互模式”和“非交互模 ...

随机推荐

  1. liunx作业一

    一.linux发行版 linux发行版是以linux为内核,包含了系统软件和应用软件.简化系统安装的工具.软件安装升级的集成管理器. 典型的linux发行版包括:linux内核,一些GNU程序库和工具 ...

  2. linux 命令行中常用光标移动快捷键

    对linux不怎么熟悉,以前在linux中敲命令的时候,要移动光标,傻傻的一个一个的移动,感觉特不爽.有几个常用的快捷键. ctrl+左右键:在单词之间跳转 ctrl+a:跳到本行的行首 ctrl+e ...

  3. Python urllib2 调试

    #!/usr/bin/env python # coding=utf-8 __author__ = 'zhaoyingnan' import urllib import urllib2 import ...

  4. Ubuntu配置Ruby和Rails

    安装curl sudo apt-get install curl 安装RVM curl -L https://get.rvm.io | bash -s stable 通过RVM来安装Ruby rvm ...

  5. [AJAX]ajax在兼容模式下失效解决办法

    使用jQuery,用ajax实现局部刷新功能,在火狐,360急速浏览器高速模式下,ie8,9都能正常运行,但切换到兼容模式下无效,解决办法有两种关闭浏览器兼容性视图,二是引入json2.js文件 这里 ...

  6. FineReport中hadoop,hive数据库连接解决方案

    1. 描述 Hadoop是个很流行的分布式计算解决方案,Hive是基于hadoop的数据分析工具.一般来说我们对Hive的操作都是通过cli来进行,也就是Linux的控制台,但是,这样做本质上是每个连 ...

  7. postman使用之一:安装启动篇

    官网介绍:http://www.getpostman.com/docs/ postman是干什么的就不介绍了,本文从postman的安装开始介绍,后续会有其它使用的介绍. 安装: 1.mac app安 ...

  8. Linux下oracle环境变量无效问题

    今天在维护oracle数据库时,查看监听的状态,执行 #lsnrctl status 报错: -bash:lsnrctl:command not found.以前并不会这样,仔细想了一下,问题找到了, ...

  9. POJ1703Find them, Catch them[种类并查集]

    Find them, Catch them Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 42416   Accepted: ...

  10. 转: 深入理解Linux修改hostname

    from: http://www.cnblogs.com/kerrycode/p/3595724.html 写的相当详细!!! 深入理解Linux修改hostname 2014-03-12 10:17 ...