可是别的网站bbb.com 都登录不了,有什么办法可以解决吗? .aaa.com ,bbb.com 同一服务器,但他们之间没有用户关系。不知道 有什么好办法? bbs.aaa.com ,look.aaa.com ,可以用一个 session ,bbb.com 也不影响。

解决方案 »

  1.   

    方法之一,用数据库session不用文件session
      

  2.   

    数据库太麻烦了,我只想把 aaa.com 和 bbb.com 区分开,不行吗?
      

  3.   

    session.cookie_domain =.aaaa.com;.bbb.com;这样写也不行呀。
      

  4.   

    别做梦了,这是浏览器禁止的!!!要不然我随便用个域名就能得到你浏览器所有的cookie,基于cookie的验证全部失效
      

  5.   

    参考我的QQ空间中摘录的文件:
    服务器端可控情形的Javascript跨域访问解决方法 
    http://user.qzone.qq.com/79730462/blog/20
      

  6.   

    用数据库共享SESSION, 挺方便的,不同域名不过要传一个SESSION_ID过去。
    最近研究了一下,没有问题,不过如果链接多的话太麻烦,需要传SESSIONid过去,应该还有其他办法,有时间再研究。希望对你有用。//func.php
    <?
    class session { 
       // session-lifetime 
       var $lifeTime; 
       // mysql-handle 
       var $dbHandle; 
       function open($savePath, $sessName) { 
           // get session-lifetime 
           $this->lifeTime = get_cfg_var("session.gc_maxlifetime"); 
           // open database-connection 
           $dbHandle = @mysql_connect("localhost","root","123"); 
           $dbSel = @mysql_select_db("test",$dbHandle); 
           // return success 
           if(!$dbHandle || !$dbSel) 
               return false; 
           $this->dbHandle = $dbHandle; 
           return true; 
       } 
       function close() { 
           $this->gc(ini_get('session.gc_maxlifetime')); 
           // close database-connection 
           return @mysql_close($this->dbHandle); 
       } 
       function read($sessID) { 
           // fetch session-data 
           $res = mysql_query("SELECT value AS d FROM sessions 
                               WHERE sesskey = '$sessID' 
                               AND expiry > ".time(),$this->dbHandle); 
           // return data or an empty string at failure 
           if($row = mysql_fetch_assoc($res)) 
               return $row['d']; 
           return ""; 
       } 
       function write($sessID,$sessData) { 
           // new session-expire-time 
           $newExp = time() + $this->lifeTime; 
           // is a session with this id in the database? 
           $res = mysql_query("SELECT * FROM sessions 
                               WHERE sesskey = '$sessID'",$this->dbHandle); 
           // if yes, 
           if(mysql_num_rows($res)) { 
               // ...update session-data 
               mysql_query("UPDATE sessions 
                             SET expiry = '$newExp', 
                             value = '$sessData' 
                             WHERE sesskey = '$sessID'",$this->dbHandle); 
               // if something happened, return true 
               if(mysql_affected_rows($this->dbHandle)) 
                   return true; 
           } 
           // if no session-data was found, 
           else { 
               // create a new row 
               mysql_query("INSERT INTO sessions ( 
                             sesskey, 
                             expiry, 
                             value) 
                             VALUES( 
                             '$sessID', 
                             '$newExp', 
                             '$sessData')",$this->dbHandle); 
               // if row was created, return true 
               if(mysql_affected_rows($this->dbHandle)) 
                   return true; 
           } 
           // an unknown error occured 
           return false; 
       } 
       function destroy($sessID) { 
           // delete session-data 
           mysql_query("DELETE FROM sessions WHERE sesskey = '$sessID'",$this->dbHandle); 
           // if session was deleted, return true, 
           if(mysql_affected_rows($this->dbHandle)) 
               return true; 
           // ...else return false 
           return false; 
       } 
       function gc($sessMaxLifeTime) { 
           // delete old sessions 
           mysql_query("DELETE FROM sessions WHERE expiry < ".time(),$this->dbHandle); 
           // return affected rows 
           return mysql_affected_rows($this->dbHandle); 
       } 

    $session = new session(); 
    session_set_save_handler(array(&$session,"open"), 
                             array(&$session,"close"), 
                             array(&$session,"read"), 
                             array(&$session,"write"), 
                             array(&$session,"destroy"), 
                             array(&$session,"gc"));                      
    session_start(); 
    ?>//aaa.com 中的一文件a.php
    <?
    include("func.php");
    $_SESSION['A'] = 'test';
    echo '<a href = "bbb.com/b.php?sid=".session_id().">共享SESSION</a>';
    ?>//bbb.com  中文件b.php
    <?
    session_id($_REQUEST['sid']);  //注意这个放前面,不然两域名下的SESSIONID会不一样,值就不同了。
    include("func.php");
    echo $_SESSION['A'];  //输出test 实现共享
    ?>
      

  7.   

    不过也可以用COOKIE保存SESSION ID , 但如果用户浏览器不支持就门都没有。
      

  8.   

    session只要有ID可以共用
    但这种方式或仍否实现共同登录仍待考证个人认为基本上可行不大登录无非两种:一种是session;另一咱是cookie,而且session也基于cookie便cookie均是有域限制的