加载中…
个人资料
EImlewc
EImlewc
  • 博客等级:
  • 博客积分:0
  • 博客访问:302
  • 关注人气:0
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
谁看过这篇博文
加载中…
正文 字体大小:

有关SESSION跨域完美解析

(2012-09-12 00:03:49)
标签:

php

session

session跨域

session跨服务器

it

分类: CC谈PHP
想要解决session跨域的问题就是要将那个唯一的SESSION ID,在不同的二级域名,比如a.a.com、b.a.com中要实现传输,这里用的是session_set_cookie_params
先在a.a.com中
<?php
session_set_cookie_params(1800 , '/','.a.com');
session_start();
var_dump($_SESSION);
$_SESSION['cc'] = 'c1';
//$_SESSION=array();
var_dump($_SESSION);
?>
后在b.a.com
<?php
session_set_cookie_params(1800 , '/','.a.com');
session_start();
var_dump($_SESSION);
$_SESSION['cc'] = 'c1';
//$_SESSION=array();
var_dump($_SESSION);
?>
先看b.a.com
array empty
        array
  'cc' => string 'c2' (length=2)
后看a.a.com

        array
  'cc' => string 'c2' (length=2)
         array
  'cc' => string 'c1' (length=2)
这样就实现了所谓的跨域问题。
其实跨域问题还可以通过
数据库、文件、URL传输、memcache(同一服务器)等传输。
小ps跨域与跨服务器:
跨域就是域名:同一二级域名下的多个三级域名,可以如上使用;这里走的是DNS。
跨服务器是走的ip,这个是架构考虑的事情了。
平常问到的差不多是跨域跨服务器,要分开理解。
其实还可以使用 iframe的js代码来操作:

1、在A系统下成功登录后,利用JS动态创建一个隐藏的iframe,通过iframe的src属性将A域下的cookie值作为get参数重定向到B系统下b.php页面上;
Js代码  
var   _frm   =   document_createElement_x_x_x_x("iframe");  
_frm.style.display="none";  
 _frm.src="http://www.222.com/setcookie.php?mycookie=xxxxx";  //此处xxx最好编码
 document.body.a(_frm);   
2、在B系统的setcookie.php页面中来获取A系统中所传过来的cookie值,并将所获取到值写入用户的cookie中,当然域是自己的了, 这样就简单的实现了cookie跨域的访问; 不过这其中有个问题需要注意,就是在FF浏览器下这样操作不能成功,需要在setocokie.php页面 中设置P3P HTTP Header就可以解决了(具体詳細信息可以参考:http://www.w3.org/P3P/),P3P设置代码为:
     header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"');//ecshop这么设置的
如有错误请多多指教。
还有哟-----没事可以粉一下楼主u  http://weibo.com/wydcw

0

阅读 评论 收藏 转载 喜欢 打印举报/Report
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有