社区应用 最新帖子 精华区 社区服务 会员列表 统计排行
  • 1596阅读
  • 0回复

[共享]discuz和phpwind blog整合

楼层直达
级别: 光盘硕士
发帖
8185
飞翔币
5698
威望
6545
飞扬币
6817
信誉值
42

最近在做discuz和phpwind blog整合。
网上下了很多插件,都不能很好的整合在一起。不是数据不能同步就是登录cookie不能同步。
下载的插件还都是zend加密的,没办法,只好自己写代码了!
phpwind blog文件中mod目录下有个passport文件,首先修改这里了!
我的discuzz表前缀是bbs_,phpwind blog表前缀是pw_,文件如下(我注册页面统一在discuz了,所以数据register不起作用):
if ( !function_exists( "readover" ) )
{
    exit( "Forbidden" );
}
if ( $do == "login" )
{
    include_once( D_P."data/cache/passport.php" );
    $db->select_db( $ps_bbsdbname );
    $PW = $ps_bbspre;
    $rt = $db->get_one( "SELECT uid,groupid,password,email FROM bbs_members WHERE username='".$pwuser."'" );
    add_s( $rt );
    add_s( $gp );
    $grouupid = $rt['groupid'] == "-1" ? $rt['memberid'] : $rt['groupid'];
    if ( $gp['hk_value'] && strpos( $gp['hk_value'], ",".$grouupid."," ) === false )
    {
        showmsg( "group_rightlimit" );
    }
    else if ( $rt && $rt['password'] == $pwpwd )
    {
        include( D_P."data/sql_config.php" );
        $db->select_db( $dbname );
        include_once( D_P."data/cache/dbreg.php" );
        include_once( D_P."data/cache/level.php" );
        $rg_memberid = array_search( "0", $lneed );
        $rg_groupid = $rg_ifcheck == "1" ? "7" : "-1";
        $verify = $rg_emailcheck == 1 ? $timestamp : 1;
        $rg_ifconvert = 0;
        $db->update( "INSERT INTO pw_user(username,password,email,publicmail,groupid,gender,regdate,qq, icq,site,rvrc,money,lastvisit,thisvisit,shownum,verify,onlineip,signchange)\tVALUES('".$pwuser."','{$pwpwd}','{$rt['email']}','1','{$rg_groupid}','0','{$timestamp}','','','','".( integer )$rg_regrvrc."','".( integer )$rg_regmoney.( "','".$timestamp."','{$timestamp}','500','{$verify}','{$onlineip}','{$rg_ifconvert}')" ) );
        $winduid = $db->insert_id( );
        $db->update( "INSERT INTO pw_domain(uid,bbsuid,username,blogname) VALUES ('".$winduid."','{$rt['uid']}','{$pwuser}','{$pwuser}')" );
        $db->update( "UPDATE pw_bloginfo SET newmember='".$pwuser."',totalmember=totalmember+1 WHERE id='1'" );
    }
    else
    {
        showmsg( "passport_error" );
    }
}
else if ( $do == "register" )
{
    include_once( D_P."data/cache/passport.php" );
    $db->select_db( $ps_bbsdbname );
    $PW = $ps_bbspre;
    $rt = $db->get_one( "SELECT uid FROM bbs_members WHERE username='".$rg_name."'" );
    add_s( $rt );
    if ( $rt )
    {
        if ( function_exists( "Showmsg" ) )
        {
            showmsg( "username_same" );
        }
        else if ( function_exists( "adminmsg" ) )
        {
            adminmsg( "username_same" );
        }
        else if ( function_exists( "usermsg" ) )
        {
            $basename = $user_file."?action=bbsatc&job=bbsreg";
            usermsg( "username_same" );
        }
        else
        {
            exit( "username already exists!" );
        }
    }
    else
    {
        if ( $rg_ifcheck == "1" )
        {
            $rg_groupid = "7";
        }
        else
        {
            $rg_groupid = "-1";
        }
        $rt = $db->get_one( "SELECT groupid FROM bbs_usergroups WHERE type='member' AND creditslower='0'" );
        $rg_memberid = $rt['gid'];
        $rg_yz = $rg_emailcheck == 1 ? $timestamp : 1;
        $db->update( "INSERT INTO bbs_members(username,password,email,groupid) VALUES('".$rg_name."','{$rg_pwd}','{$rg_email}','10')" );
    }
    include( D_P."data/sql_config.php" );
    $db->select_db( $dbname );
    include( D_P."data/cache/dbreg.php" );
}

然后就是cookie的同步问题了:
在discuz登录时加上如下代码:
    //设置blog登录cookie
   
    $sql_blogid="SELECT uid FROM pw_domain WHERE bbsuid='$discuz_uid'";   
    $result_blogin=mysql_query($sql_blogid);
    $rowbg=mysql_fetch_array($result_blogin);
    require_once"../blog/upload/global.php";
    $winduid=$rowbg["uid"];
    $windpwd=confuse($discuz_pw);
    $cktime=$cookietime;
    $db_ckdomain='192.168.1.110';
    $db_ckpath='/';
    //echo $winduid;
    //dsetcookie('bloguser', authcode("$winduid\t$windpwd", 'ENCODE'), $cookietime);
    Cookie("bloguser",$winduid."\t".$windpwd,$cktime);
    Cookie("ckinfo",$db_ckpath."\t".$db_ckdomain);
    //Cookie('lastvisit','',0);
    //设置blog登录cookie结束

在phpwind blog登录时加上如下代码:
    //设置discuz登录cookie
    //require_once "../../../include/global.func.php";
    //require_once "../../../include/common.inc.php";
    $sql_id=$db->get_one("SELECT pw_domain.bbsuid,bbs_members.password FROM pw_domain,bbs_members WHERE pw_domain.uid='$winduid' AND bbs_members.uid=pw_domain.bbsuid");   
    $discuz_uid=$sql_id['bbsuid'];
    $discuz_pw=$sql_id['password'];
    $discuz_secques='';
    //$db_ckdomain='192.168.1.110';
    //$db_ckpath='/';
    $cookietime = 31536000;
   
    dsetcookie('bbs_cookietime', $cookietime, 31536000);
    dsetcookie('bbs_auth', authcode("$discuz_pw\t$discuz_secques\t$discuz_uid", 'ENCODE'), $cookietime);
    //设置discuz登录cookie

然后要做的就是将discuz的global.func.php文件中的加密解密函数和设置cookie的函数另存为fun.php包含到phpwind blog登录页面就可以了!