关于跨域名的信息共享P3P实例

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

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

<?php
session_start();
$get = $_GET;

if($get[‘uname‘] == ‘ftt‘&& $get[‘pass‘] == ‘123‘)
{
$token = md5(rand());
$_SESSION[‘user‘] = ‘ftt‘;
$_SESSION[‘islogin‘] = 1;

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‘,‘6379‘);
}

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()+3600,‘/‘);
    }

}

我会在自己的需要的页面的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‘,1);  //如果is_uid是1那么就是登录状态
            }else{
                $this->assign(‘is_uid‘,2);  //如果is_uid是2那么就是没有登录
            }
        }else{
            $this->assign(‘is_uid‘,2);  //如果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);
    }
时间: 2024-10-31 23:22:51

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

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

1.两个系统的 web.config 都配置为 forms 验证方式( system.web —> authentication 节点) 2.在两个系统的Web.config里配置相同的 system.web —> machineKey 节点(节点生成:http://www.aspnetresources.com/tools/keycreator.aspx) 3.在两个系统的Web.config里配置相同的 system.web —> httpCookies 节点(<httpCoo

mvc4实现跨域名cokkie共享。

网上搜一下都很多,按上面的代码发现无法正常共享.我们的站点是使用IIS7 经过一段时间研究.实现了,.特将代码共享出来,首先是c#代码 /// <summary> /// 登录成功后,设置COOKIE /// </summary> /// <param name="entity"></param> public void SaveUserFormsCookie(LoginUser entity, bool isRememberMe = f

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

cookie 请求跨域的问题, 假设我有两个域名,一个 m.example.com,另一个是 www.example.com . 那么我需要如何设置 cookie 才可以在这两个域名都实现共享呢? // m.example.com & www.example.com 的根域名都是 example.com // 所以在 setcookie 时,我们只需要在指定的 $domain 设置为了该公共的根域名即可,实现两个域名共享访问 cookie 值 // bool setcookie ( string

跨域名上传图片

在我写一些小功能或者在上一篇文章提到的网站根据接口开发,这样就会遇到上传图片可能会跨域名. 比如,我想在我的电脑上写一些程序,给同在局域网内的同事用,比如用“联图”生成二维码.在二维码上添加的logo必须是一张在线图片,也就是说需要一台服务器.但是我不想把程序放到服务器上去,图片的话,无所谓.这样的话,我就需要把同事上传的图片,先post到我的电脑上来,然后通过我电脑的wamp服务器再post到服务器上去,因为我和同事是局域网,上传时间基本为0,只有我上传到服务器需要点时间.所以整个过程在时间上

JS获取链接中域名等信息

以访问百度为例子http://pan.baidu.com/share/qrcode?w=150&h=150&url=http%3A%2F%2F172.16.1.96%2FWeb%2FGetUserOrdersInfo%3Ftelephone%3D18814129365%26reserveID%3D21 获取链接中的域名等信息:window.location.(xxx) 其中(xxx)可以是一下内容: hash: "" host: "pan.baidu.com&

session跨域和ajax跨域名

后台跨域和ajax跨域名: 后台跨域: www.baidu.com   主域名(一级域名一般以www开头) news.baidu.com   二级域名 (a.test.com和b.test.com有相同的域,和test.a.com不是同一个域) 同一个域下可以使用setcookie( '名字' , 'session_id' , 'time()+3600' , '/' , '域' );来存储session_id. 例如:a.php在a.test.com下    b.php在b.test.con下

ajax 跨域名调用

在ajax 中要跨域名 请求的时候要注意 1. dataType: 'jsonp', 2. jsonp: 'callback', <script type="text/javascript"> $(document).ready(function () { var urle = "http://www.hao123.com"; $.ajax({ url: urle, type: 'GET', dataType: 'jsonp', jsonp: 'call

IFRAME跨域名的解决方法,终结版(小张.NET原创)[摘自 西部数码]

以前碰到此类问题很郁闷,MS为什么开发出这么个鸟IE,让这些人不得不跟着他走,后来想了想,也是,为了安全期间,还是要加上限制的,要不,别人可以随便的改你的网页内容,等等...好了,其它的废话不说了,看看下边的吧:记得要将域名指为域名,而不是WWW或者其它的,例:shagndu8.com 而不能指向www.shangdu8.com 1.请在父网页上加上以下代码:1<SCRIPT LANGUAGE="VBScript">2    document.domain = "

java 结合jQuery实现跨域名获取数据

一.什么是跨域? 由于浏览器出于安全的考虑,采取了同源策略的限制,使得jQuery无法直接跨域名互相操作对象或数据.例如:a.com 域名下的 a.html页面利用jQuery无法操作b.com域名下b.html页面的对象或是数据,并且默认情况下也不能操作test.a.com域名下的 test.html的对象或是数据.只要满足下面条件的jQuery都会视为跨域名: 1.主域相同,子域不同,如xxx.aaa.com和yyy.aaa.com 2.域名相同,端口不同,如xxx.aaa.com:8000