我做了一个第三方登陆,可就是不行,在自己写的一个登陆页面登陆成功后可是跳转到discuz还是显示没有登陆状态。
我是在本地做的测试。
<html>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<head>
<title>dz登陆</title>
</head>
<body>
<form action="" method="post" name="frm">
 用户名:<input type="text" name="username" size="20" />
 <br />
 密码:<input type="password" name="password" size="20" />
 <br />
 <input type="submit" value="登陆">
</form>
</body>
<html>
<?php
if(!empty($_POST))
{
require_once 'discuz/config.inc.php';
require_once 'discuz/uc_client/client.php';
list($uid, $username, $password, $email) = uc_user_login($_POST['username'], $_POST['password']);
if($uid > 0) {
echo '登录成功';
echo uc_user_synlogin($uid);
echo "<script type='text/javascript'>location='discuz/index.php';</script>";
} elseif($uid == -1) {
echo '用户不存在,或者被删除';
} elseif($uid == -2) {
echo '密码错';
} else {
echo '未定义';
}
}
?>
请高人指点

解决方案 »

  1.   

    你真的搞明白了DZ的同步登陆机制了吗?
    不过看楼主额代码就知道,还没完全明白
    DZ的同步登陆返回的是JS的&lt;script&gt;完整的代码,这些返回的数据需要你添加到页面中去,而且必须被执行,才能实现相应站点的同步登陆。你现在的代码,想破脑袋都不可能实现同步登陆的
      

  2.   

    这个应该同步到ucenter,然后由ucenter去同步登陆dz
    你好像直接调用dz的登陆api了 这样不行
      

  3.   

    康盛的产品都是基于UC的,
    同步登陆也是要通过UC再转向dz
      

  4.   

    直接整合康盛的UCenter,然后由UCenter同步登陆。康盛有UCenter API手册,可以去官方网站找找看。
      

  5.   

    看了好几天,都看不明白,这个是按着ucenter手册上写了一个以,我感觉还是少点什么,不知道是哪里少东西,还是哪里有错。uc_user_synlogin($uid),同步登录的 HTML 代码。谁知道我的这个是哪里错了
      

  6.   

    楼主网站的主域名相同吗?
    如果相同,自己实现disuz的用户登录和验证就行了。登录时写cookie变量auth或sid,验证登录的时候,先验证auth再验证sid。
    如果不同,那要在第三方上安装UC,然后在两边配置同步登录。
      

  7.   

    http://blog.csdn.net/fkedwgwy/archive/2009/05/06/4154396.aspx见如上地址,
    代码如下:if($action == 'login') {
            //通过接口判断登录帐号的正确性,返回值为数组
        list($uid, $username, $password, $email) = uc_user_login(u2g($_POST['username']), $_POST['password']);//登录    if($uid > 0) {
           
            $member = $db->fetch_first("SELECT m.uid AS discuz_uid, m.username AS discuz_user, m.password AS discuz_pw, m.secques AS discuz_secques,
                    m.email, m.adminid, m.groupid, m.styleid AS styleidmem, m.lastvisit, m.lastpost, u.allowinvisible
                    FROM {$tablepre}members m LEFT JOIN {$tablepre}usergroups u USING (groupid)
                    WHERE m.uid='$uid'");//查询
           // print_r($member);
            extract($member);
                $discuz_userss = $discuz_user;
                $discuz_user = addslashes($discuz_user);
           
                $cookietime = intval(isset($_POST['cookietime']) ? $_POST['cookietime'] : 0);            dsetcookie('cookietime', $cookietime, 31536000);
                dsetcookie('auth', authcode("$discuz_pw\t$discuz_secques\t$discuz_uid", 'ENCODE'), $cookietime, 1, true);
                dsetcookie('loginuser');
                dsetcookie('activationauth');
                dsetcookie('pmnum');
                $sessionexists = 0;            updatesession();
                $ucsynlogin = $allowsynlogin ? uc_user_synlogin($discuz_uid) : '';//数据更新            echo "登录成功!";}else{             echo "登录失败!":}}
      

  8.   

    还要 包含 
    session_start();
    /*
    [Discuz!] (C)2001-2007 Comsenz Inc.
    This is NOT a freeware, use is subject to license terms $Id: logging.php 10115 2007-08-24 00:58:08Z cnteacher $
    */define('NOROBOT', TRUE);
    define('CURSCRIPT', 'logging');require_once './include/common.inc.php';
    require_once DISCUZ_ROOT.'./include/misc.func.php';
      

  9.   

    直接调用论坛登录那的页面代码,标签名字不要改,直接提交给它提交的页面就行了,登录成功会自动返回登录那个页面的。
    哦,对了,还有个formhash函数,你要拖个参数在post页面后面。。
      

  10.   

    不明白这个if($action == 'login')是怎么回事,还有就是  print_r($member);什么都不输出