教学之友,学习之友。

站长教学网

当前位置: 站长教学网 > 网站编程 > PHP教程 >

php如何实现跨域获取cookie,达到多站登录效果

时间:2012-07-25 11:34来源:未知 作者:ken 点击:
以下代码测试可以跨域获取cookies,根据实际应用修改:
A网站首页PHP(也可以在登录页面加入下面的代码)加入如下代码

<?php
//清空cookies
setcookie("mywinduid");
//为B页面权限设置cookie, setcookie("mywinduid",$winduid,time()+60*60*24);//设置为1天失效,下面为关闭浏览器失效
setcookie("mywinduid",$winduid);
?>

A网站增加文件getcookies.php,目的是为了让B网站可以以ajax方式来查询A网站的cookie
getcookies.php 代码如下 

<?php
$callback = $_GET['jsoncallback'];
$mywinduid = $_COOKIE['mywinduid'];//多个参数的话以","隔开,例如json_encode(array('winduid'=>$winduid,'msg'=>$msg));
//可以用json_encode自动转换,也可以手写json格式 $json_data = '{"mywinduid":'.$mywinduid.'}';
$json_data = json_encode(array('mywinduid'=>$mywinduid));
//必需以下这样形式输出,重点就是发送请求的网页的参数中要有jsoncallback参数
echo $callback.'('.$json_data.')';
?>

在需要查询A网站cookie的B网站页面中增加如下代码

<script type="text/javascript" src="jquery-1.6.1.min.js"></script>
<script type="text/javascript" src="jquery.cookie.js"></script>
<script type="text/javascript">
$(function(){ 
 $("#adminwhj").click(function(){//点击B网站中的登录按钮,这地方也可以不需要用click,直接打开页面就获取cookie
  var myurl = "http://www.a.com/getcookies.php?action=getcookie";
  $.getJSON(myurl+"&jsoncallback=?", function(data){  
   if(data.mywinduid!="" && data.mywinduid!= null){
    var winduid = data.mywinduid;
    if((winduid==4)||(winduid==2)){
     $.cookie('mywinduid',winduid);//设置cookies
     location.reload();//刷新页面
    }else{
     alert("您没有管理权限!");
    }
   }else{
    alert("请在www.a.com登录后再进行管理");
   }
  }) 
 })
})
</script>

下面是B网站的这个页面中需要做权限判断的代码

<!--需要权限的判断开始 站长教学网 eduyo.com-->
<?
$winduid=$_COOKIE["mywinduid"];
if (($winduid==4)||($winduid==2))
{<!--管理需要的代码-->}
?>

整个原理就是,B网站上文件可以通过A网站的getcookies.php来获取A网站的cookie,然后在B网站的页面提供权限判断,这样B网站中不需要再单独做用户登录。

(责任编辑:ken)
TAG标签: php 跨域 Cookie
顶一下
(2)
100%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
注册登录:不允许匿名留言,登录后留言无需输入验证码。
栏目列表
最新内容