<?php
class mdSession
{
/*

使用:
服务器A,服务器B,在A的index.php登陆,在B里建立一个接收SESSION的文件,例如ses_get.php
A的index.php做如下修改
最开始加上session_start();
<body></body>里,任意一个地方写上:mdSession::_setTo('B/ses_get.php')
而ses_get.php则在开头写上mdSession::_get();
@作者:[email protected] http://www.surfchen.org/
*/
function mdSession()
{

}
function set($urls)
{
if (!is_array($urls))
{
$urls=array($urls);
}
foreach ($urls as $value)
{
echo '<span style="position:absolute;visibility:hidden"><iframe src="'.$value.'?'.session_id().'"></iframe></span>';
}
return true;
}
function get()
{
session_id($_SERVER['QUERY_STRING']);
session_start();
return true;
}
function _set($urls)
{
$obj=new mdSession();
return $obj->set($urls);
}
function _get()
{
$obj=new mdSession();
return $obj->get();
}
}
?>

解决方案 »

  1.   

    任意一个地方写上:mdSession::_setTo('B/ses_get.php')改为
    任意一个地方写上:mdSession::_set('B/ses_get.php')
      

  2.   

    安全性绝对有问题,可以使得SESSION被欺骗!所以我不建议用以上代码。可以去网上搜索SESSION类,有的采用数据库存储,并且支持跨域名。
      

  3.   

    PHP目前的SESSION存储是采用文本存储,我想问,在这个问题上,文本存储和数据库存储有区别吗?跨域共享,无非就是要实现两点,一是服务器的SESSION数据同步/共享,二是在客户端,不同的域,传递一个SESSION ID不过我上面的方法在IE下有问题,因为IE不允许一个iframe下的与parent不同域的地址进行写cookie.
      

  4.   

    冒昧地问一下
    既然不同域名,何必要公用session
    要使用session传递内容可以使用数据库或者将用户信息从新提交不是也可以么?
    如果要将sessionID作为处理编号,拿着两个域名要求用户访问的先后次序也不能指定么?
      

  5.   

    对于  iframe 可以不用 cookie 存 sessid 一般用 url 就行了。
      

  6.   

    http://blog.csdn.net/heiyeshuwu/archive/2005/11/02/521010.aspx