Discuz!登录,注册,退出接口.

<script type="text/javascript"><!-- google_ad_client = "pub-0241434510974184"; /* auto-http.cn 右边 ,468x60 */ google_ad_slot = "0902256228"; google_ad_width = 468; google_ad_height = 60; // --></script><script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"></script>

现在用Discuz! 6了.网上找了几个现成的接口都不能用,后来看见csdn论坛上面几个人说直接看文档.

文档很详细,照着文档写了个简单

需要配置的地方不多.

1.用户名,密码(如果没有用户就算注册进去了.)

'username' => 'username',
'password' => md5('000000'),
'email' => 'linjin@ine.net.cn',

2.接口操作方式(登录,注册,退出)

$action= 'login'; // 登录,注册
//$action= 'logout'; // 退出

3.Discuz!的URL.

JsGoto("http://127.0.0.1/bbs/api/passport.php".
"?action=$action".
"&auth=".rawurlencode($auth).
"&forward=".rawurlencode($forward).
"&verify=$verify");

4.其它细节Discuz!文档

Discuz! Passport 接口技术文档

http://www.discuz.net/usersguide/advanced_passport.htm#title

<? php

// ///
/*
*
*Passport加密函数
*
*@paramstring等待加密的原字串
*@paramstring私有密匙(用于解密和加密)
*
*@returnstring原字串经过私有密匙加密后的结果
*/
function passport_encrypt( $txt , $key ){

// 使用随机数发生器产生0~32000的值并MD5()
srand (( double ) microtime () * 1000000 );
$encrypt_key = md5 ( rand ( 0 , 32000 ));

// 变量初始化
$ctr = 0 ;
$tmp = '' ;

// for循环,$i为从0开始,到小于$txt字串长度的整数
for ( $i = 0 ; $i < strlen ( $txt ); $i ++ ){
// 如果$ctr=$encrypt_key的长度,则$ctr清零
$ctr = $ctr == strlen ( $encrypt_key ) ? 0 : $ctr ;
// $tmp字串在末尾增加两位,其第一位内容为$encrypt_key的第$ctr位,
//第二位内容为$txt的第$i位与$encrypt_key的$ctr位取异或。然后$ctr=$ctr+1

$tmp .= $encrypt_key [ $ctr ] . ( $txt [ $i ] ^ $encrypt_key [ $ctr ++ ]);
}

// 返回结果,结果为passport_key()函数返回值的base64编码结果
return base64_encode (passport_key( $tmp , $key ));

}

/* *
*Passport解密函数
*
*@paramstring加密后的字串
*@paramstring私有密匙(用于解密和加密)
*
*@returnstring字串经过私有密匙解密后的结果
*/
function passport_decrypt( $txt , $key ){

// $txt的结果为加密后的字串经过base64解码,然后与私有密匙一起,
//经过passport_key()函数处理后的返回值

$txt = passport_key( base64_decode ( $txt ) , $key );

// 变量初始化
$tmp = '' ;

// for循环,$i为从0开始,到小于$txt字串长度的整数
for ( $i = 0 ; $i < strlen ( $txt ); $i ++ ){
// $tmp字串在末尾增加一位,其内容为$txt的第$i位,
//与$txt的第$i+1位取异或。然后$i=$i+1

$tmp .= $txt [ $i ] ^ $txt [ ++ $i ];
}

// 返回$tmp的值作为结果
return $tmp ;

}

/* *
*Passport密匙处理函数
*
*@paramstring待加密或待解密的字串
*@paramstring私有密匙(用于解密和加密)
*
*@returnstring处理后的密匙
*/
function passport_key( $txt , $encrypt_key ){

// 将$encrypt_key赋为$encrypt_key经md5()后的值
$encrypt_key = md5 ( $encrypt_key );

// 变量初始化
$ctr = 0 ;
$tmp = '' ;

// for循环,$i为从0开始,到小于$txt字串长度的整数
for ( $i = 0 ; $i < strlen ( $txt ); $i ++ ){
// 如果$ctr=$encrypt_key的长度,则$ctr清零
$ctr = $ctr == strlen ( $encrypt_key ) ? 0 : $ctr ;
// $tmp字串在末尾增加一位,其内容为$txt的第$i位,
//与$encrypt_key的第$ctr+1位取异或。然后$ctr=$ctr+1

$tmp .= $txt [ $i ] ^ $encrypt_key [ $ctr ++ ];
}

// 返回$tmp的值作为结果
return $tmp ;

}

/* *
*Passport信息(数组)编码函数
*
*@paramarray待编码的数组
*
*@returnstring数组经编码后的字串
*/
function passport_encode( $array ){

// 数组变量初始化
$arrayenc = array ();

// 遍历数组$array,其中$key为当前元素的下标,$val为其对应的值
foreach ( $array as $key => $val ){
// $arrayenc数组增加一个元素,其内容为"$key=经过urlencode()后的$val值"
$arrayenc [] = $key . ' = ' . urlencode ( $val );
}

// 返回以"&"连接的$arrayenc的值(implode),例如$arrayenc=array('aa','bb','cc','dd'),
//则implode('&',$arrayenc)后的结果为”aa&bb&cc&dd"

return implode ( ' & ' , $arrayenc );

}

function JsWrite( $msg )
{
echo " <scriptlanguage="javascript"> " ;
echo $msg ;
echo " </script> " ;
}

function JsGoto( $url )
{
$msg = " location.href='$url'; " ;
JsWrite(
$msg );
exit ;
}

$passport_key = '' ;

$member = array
(
' cookietime ' => time () ,
' time ' => time () ,
' username ' => 'username ' ,
' password ' => md5 ( '0000 00 ' ) ,
' email ' => ' linjin@ine.net.cn ' ,
' credits ' => '' ,
' regip ' => '' ,
' regdate ' => '' ,
' msn ' => ''
);


$action = ' login ' ; // 登录,注册
//$action='logout';//退出

$auth = passport_encrypt(passport_encode( $member ) , $passport_key );
$forward = ' http://127.0.0.1/bbs/index.php ' ;
$verify = md5 ( $action . $auth . $forward . $passport_key );

/*
header("Location:http://127.0.0.1/bbs/api/passport.php".
"?action=$action".
"&auth=".rawurlencode($auth).
"&forward=".rawurlencode($forward).
"&verify=$verify");
*/


JsGoto(
" http://127.0.0.1/bbs/api/passport.php " .
" ?action=$action " .
" &auth= " . rawurlencode ( $auth ) .
" &forward= " . rawurlencode ( $forward ) .
" &verify=$verify " );



?>
论坛软件系统亦称电子公告板(BBS)系统,它伴随社区BBS的流行而成为互联网最重要的应用之一,也逐渐成为网站核心竞争力的标志性体现。2006年7月 CNNIC 发布的最新统计表明,43.2% 的中国网民经常使用论坛/BBS/讨论组,论坛社区应用首次超过即时通讯 IM ,成为仅次于收发Email的互联网基本应用。 Crossday Discuz! Board(以下简称 Discuz!,中国国家版权局著作权登记号 2006SR11895)是康盛创想(北京)科技有限公司(英文简称Comsenz)推出的一套通用的社区论坛软件系统,用户可以在不需要任何编程的基础上,通过简单的设置和安装,在互联网上搭建起具备完善功能、很强负载能力和可高度定制的论坛服务。Discuz! 的基础架构采用世界上最流行的 web 编程组合 PHP+MySQL 实现,是一个经过完善设计,适用于各种服务器环境的高效论坛系统解决方案。 作为国内最大的社区软件及服务提供商,Comsenz旗下的 Discuz! 开发组具有丰富的 web 应用程序设计经验,尤其在论坛产品及相关领域,经过长期创新性开发,掌握了一整套从算法,数据结构到产品安全性方面的领先技术。使得 Discuz! 无论在稳定性,负载能力,安全保障等方面都居于国内外同类产品领先地位。 自2001年6月面世以来,Discuz!已拥有五年以上的应用历史和三十多万网站用户案例,是全球成熟度最高、覆盖率最大的论坛软件系统之一。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值