同服务器下php跨域共享SESSION

SESSION共享达到不同网站只需登录一次,就能访问不同应用的目的。如果想达到这个目的,必须对session的工作原理了如指掌。

 

session的工作原理

1)当一个session第一次被启用时,一个唯一的标识被存储于本地的cookie中。

2)首先使用session_start()函数,PHPsession仓库中加载已经存储的session变量。

3)当执行PHP脚本时,通过使用session_register()函数注册session变量。

4)当PHP脚本执行结束时,未被销毁的session变量会被自动保存在本地一定路径下的session库中,这个路径可以通过php.ini文件中的session.save_path指定,下次浏览网页时可以加载使用。

 

当一个session第一次被启用时,一个唯一的标识被存储于本地的cookie中。如果是同服务器下不同域名的话,我们可以取巧一下,只需设置Cookie的这个位置标示。那么我的php.inisession名称为PHPSESSID。这里可以用$_COOKIE['PHPSESSID']获取当前域下的Cookie

 

以上是关于SESSION的基础内容。一下是怎么实现SESSION跨域。

 

测试域名:

A站:www.a.com

 B站:www.b.com

C站:www.c.com

所需材料 jquery.js


第一步:所有SESSIONA站为主。

A站根目录下建立一个s.php


<?php
session_start();
//如果没有获取到cookie再跳转一次从新获取cookie
if (!$_COOKIE['PHPSESSID']) {
	header("location:s.php");
}
echo 'var session_key="'.$_COOKIE['PHPSESSID'].'";';

第二步:在每个网站下面创建s.js

//获取cookie
function getCookie(objName) {
    var arrStr = document.cookie.split("; ");
    for (var i = 0; i < arrStr.length; i++) {
        var temp = arrStr[i].split("=");
        if (temp[0] == objName) return unescape(temp[1]);
    }
}
//设置cookie
function addCookie(objName, objValue) {
    var str = objName + "=" + escape(objValue)+";path=/";
    document.cookie = str;
}
//统一SESSIONid
$(function() {
    var ses_key = "PHPSESSID";
    getCookie(ses_key) != session_key && addCookie(ses_key, session_key);
});

第三步:在每个页面下引用这些文档


<script language="javascript" type="text/javascript" src="/js/jquery.js"></script>
<script src="http://www.a.com/s.php" type="text/javascript"></script>
<script language="javascript" type="text/javascript" src="/js/s.js"></script>

文章来源: 尚站互联


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值