分类: IT职场
2011-10-21 08:49:04
利用cookie实现跨域,可以称为SSO单点登录
A网站首页PHP(也可以在登录页面加入下面的代码)加入如下代码
view
plaincopy to clipboardprint?
1. 2. //清空cookies
3. setcookie("mywinduid");
4. //为B页面权限设置cookie,
setcookie("mywinduid",$winduid,time()+60*60*24);//设置为1天失效,下面为关闭浏览器失效
5. setcookie("mywinduid",$winduid);
6. ?>
A网站增加文件getcookies.php,目的是为了让B网站可以以ajax方式来查询A网站的cookie
getcookies.php
代码如下
view plaincopy to
clipboardprint?
1. 2. $callback =
$_GET['jsoncallback'];
3. $mywinduid =
$_COOKIE['mywinduid'];//多个参数的话以","隔开,例如json_encode(array('winduid'=>$winduid,'msg'=>$msg));
4. //可以用json_encode自动转换,也可以手写json格式 $json_data =
'{"mywinduid":'.$mywinduid.'}';
5. $json_data =
json_encode(array('mywinduid'=>$mywinduid));
6. //必需以下这样形式输出,重点就是发送请求的网页的参数中要有jsoncallback参数
7. echo
$callback.'('.$json_data.')';
8. ?>
在需要查询A网站cookie的B网站页面中增加如下代码
view
plaincopy to clipboardprint?
1.
2.
3.
下面是B网站的这个页面中需要做权限判断的代码
view
plaincopy to clipboardprint?
1.
2.
3. $winduid=$_COOKIE["mywinduid"];
4. if
(($winduid==4)||($winduid==2))
5. {}
6. ?>
整个原理就是,B网站上文件可以通过A网站的getcookies.php来获取A网站的cookie,然后在B网站的页面提供权限判断,这样B网站中不需要再单独做用户登录
原文地址: