discuz同步登陆问题

lw20100 2010-10-02 11:06:15
我做了一个第三方登陆,可就是不行,在自己写的一个登陆页面登陆成功后可是跳转到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 '未定义';
}
}
?>
请高人指点
...全文
1070 点赞 收藏 22
写回复
22 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
hahayizufeng 2011-03-23
楼主的问题解决的了?
回复
lw20100 2010-10-27
[Quote=引用 17 楼 fkedwgwy 的回复:]

引用 16 楼 fkedwgwy 的回复:

http://blog.csdn.net/fkedwgwy/archive/2009/05/06/4154396.aspx

见如上地址,
代码如下:

if($action == 'login') {
//通过接口判断登录帐号的正确性,返回值为数组
list($uid, $username, $password, $email) ……
[/Quote]
不明白这个if($action == 'login')是怎么回事,还有就是 print_r($member);什么都不输出
回复
若非零落 2010-10-26
直接调用论坛登录那的页面代码,标签名字不要改,直接提交给它提交的页面就行了,登录成功会自动返回登录那个页面的。
哦,对了,还有个formhash函数,你要拖个参数在post页面后面。。
回复
潇湘博客 2010-10-26
[Quote=引用 16 楼 fkedwgwy 的回复:]

http://blog.csdn.net/fkedwgwy/archive/2009/05/06/4154396.aspx

见如上地址,
代码如下:

if($action == 'login') {
//通过接口判断登录帐号的正确性,返回值为数组
list($uid, $username, $password, $email) = uc_user_log……
[/Quote]


还要 包含


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';
回复
潇湘博客 2010-10-26
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 "登录失败!":

}

}
回复
kuaileshi 2010-10-26
rtttttttttttt
回复
lw20100 2010-10-25
看了好几天,都看不明白,这个是按着ucenter手册上写了一个以,我感觉还是少点什么,不知道是哪里少东西,还是哪里有错。uc_user_synlogin($uid),同步登录的 HTML 代码。谁知道我的这个是哪里错了
回复
ljs1989 2010-10-25
主域名相同吗?
回复
taipingren 2010-10-25
楼主网站的主域名相同吗?
如果相同,自己实现disuz的用户登录和验证就行了。登录时写cookie变量auth或sid,验证登录的时候,先验证auth再验证sid。
如果不同,那要在第三方上安装UC,然后在两边配置同步登录。
回复
winslow 2010-10-23
我的理解都是需要用js通知其它网站登陆.
回复
shootblue 2010-10-22
直接整合康盛的UCenter,然后由UCenter同步登陆。

康盛有UCenter API手册,可以去官方网站找找看。
回复
lw20100 2010-10-22
我想知道这个怎么弄才可以同步啊,不明白要改哪里的代码
回复
lw20100 2010-10-21
[Quote=引用 8 楼 lea200304 的回复:]
引用 4 楼 wfstock 的回复:
你真的搞明白了DZ的同步登陆机制了吗?
不过看楼主额代码就知道,还没完全明白
DZ的同步登陆返回的是JS的&amp;lt;script&amp;gt;完整的代码,这些返回的数据需要你添加到页面中去,而且必须被执行,才能实现相应站点的同步登陆。你现在的代码,想破脑袋都不可能实现同步登陆的

康盛的产品都是基于UC的,
同步登陆也是要……
[/Quote]
这个怎么uc转向dz的
回复
忧伤的蜗牛 2010-10-13
[Quote=引用 4 楼 wfstock 的回复:]
你真的搞明白了DZ的同步登陆机制了吗?
不过看楼主额代码就知道,还没完全明白
DZ的同步登陆返回的是JS的&lt;script&gt;完整的代码,这些返回的数据需要你添加到页面中去,而且必须被执行,才能实现相应站点的同步登陆。你现在的代码,想破脑袋都不可能实现同步登陆的
[/Quote]
康盛的产品都是基于UC的,
同步登陆也是要通过UC再转向dz
回复
wanghao3616 2010-10-12
通过js好像不行 你最好 做转向 通过页面跳转 来执行登录操作
回复
klend 2010-10-12
这个应该同步到ucenter,然后由ucenter去同步登陆dz
你好像直接调用dz的登陆api了 这样不行
回复
培子 2010-10-10
11111111
回复
你真的搞明白了DZ的同步登陆机制了吗?
不过看楼主额代码就知道,还没完全明白
DZ的同步登陆返回的是JS的<script>完整的代码,这些返回的数据需要你添加到页面中去,而且必须被执行,才能实现相应站点的同步登陆。你现在的代码,想破脑袋都不可能实现同步登陆的
回复
Only_You_forver 2010-10-08
出现了什么错误啊?
或者返回了什么数据啊?
回复
相关推荐
发帖
PHP
创建于2008-08-27

1.9w+

社区成员

“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
申请成为版主
帖子事件
创建了帖子
2010-10-02 11:06
社区公告
暂无公告