首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > PHP >

PHP 应用session对两个不同的服务器网站进行同步登录

2013-08-14 
PHP 使用session对两个不同的服务器网站进行同步登录现在有两个服务器a:www.test1.comb:www.test2.com我想

PHP 使用session对两个不同的服务器网站进行同步登录
现在有两个服务器
a:www.test1.com
b:www.test2.com
我想在test1里面进行登录,然后在test2里面也同样进行登录,请问这个该怎么写?

我有部分测试代码如下
在test1登录的时候,如果登录成功那么就执行下面

$fp = pfsockopen("www.test2.com",80,$errorno,$errormsh);//连接服务器
if ($fp){
    $out = "GET /login.php?acc=".$acc."&psw=".$psw." HTTP/1.1\r\n";   
    $out.= "Host:www.test2.com\r\n";   
    $out.= "Connection: Close\r\n\r\n";   
     
    fputs($fp, $out);
    fclose($fp);   
}


然后在www.test2.com里面的login.php文件
$acc = $_GET['acc'];
$psw = $_GET['psw'];
$_SESSION['acc'] = $acc;
$_SESSION['psw'] = $psw;


然后我访问www.test2.com
发现session为空啊  
求高手指教! PHP session 跨域? 登录?
[解决办法]
如果单点登录这么容易搞得话,那些 SSO 服务商不都要倒闭了?

session 依靠 cookie 携带的 sessionid 做唯一性识别
而正常的 cookie 是不能跨域的。虽然利用一些技术手段可以实现 cookie 跨域,但这毕竟是利用了规则上的漏洞,并不可取。

我们知道,如果一个网站有设置了失效期的 cookie 的话,当浏览结束时就会在浏览器缓冲区留下一个以该网站域名的 cookie 文件。当再次访问该网站时,这个上次保存的 cookie 就会被发送回去

因此,你只要在访问 www.test1.com 的时候,设法留下一个 www.test2.com 的 cookie 文件
那么你再访问 www.test2.com 的时候就能实现同步了

怎么留?在 www.test1.com 返回的页面中用 iframe 或 js 访问一下 www.test2.com 的特定文件

当然,这只是基础,需要考虑的问题远不止这点


[解决办法]
只要 www.test2.com/login.php 是在 www.test1.com 返回的页面里面调用的就可以
就是说你在访问 www.test1.com 的同时也访问了 www.test2.com
这样 www.test1.com 的 cookie 供访问 www.test1.com 用
www.test2.com 的 cookie 供访问 www.test2.com 用

[解决办法]
“在 www.test1.com 返回的页面里面调用”是指请求是从浏览器发出的,这样返回的 cookie 才会被浏览器保存

热点排行