discuz 整合总结

一.首先将discuz的拓展设置里的通行证设置好.

然后就可以通过下面的方法整合用户了.

<?php

//////////////////////////////////////////////////////////////////////////////////*** Passport 加密函数** @param string 等待加密的原字串* @param string 私有密匙(用于解密和加密)** @return string 原字串经过私有密匙加密后的结果*/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 解密函数** @param string 加密后的字串* @param string 私有密匙(用于解密和加密)** @return string 字串经过私有密匙解密后的结果*/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 密匙处理函数** @param string 待加密或待解密的字串* @param string 私有密匙(用于解密和加密)** @return string 处理后的密匙*/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 信息(数组)编码函数** @param array 待编码的数组** @return string 数组经编码后的字串*/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 “/n”; echo $msg; echo “/n”;}

function JsGoto($url){ $msg = “location.href = ‘$url’;”; JsWrite($msg); exit;}

$passport_key = ”;

$member = array(‘cookietime’ => time(),’time’ => time(),’username’ => ‘username’,’password’ => md5(‘000000′),’email’ => ‘linjin@ine.net.cn’,’credits’ => ”,’regip’ => ”,’regdate’ => ”,’msn’ => ”);

$action = ‘login’; // 登录,注册//$action = ‘logout’; // 退出$auth = passport_encrypt(passport_encode($member), $passport_key);$forward = ‘http://210.51.167.119/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”);

?>

二.直接利用disxuz的用户资源.

<form id=”loginform” method=”post” name=”login” action=”../bbs/logging.php?action=login&amp;loginsubmit=true”><table width=”100%” border=”0″ cellspacing=”0″ cellpadding=”0″> <tr> <td height=”6″ colspan=”2″ bgcolor=”#EDEDED”><input name=”forward” value=”../../index.php” type=”hidden”><input name=”formhash” value=”” type=”hidden”><input name=”cookietime” value=”2592000″ type=”hidden”><input name=”loginfield” value=”username” type=”hidden”>

</form>

任何的限制,都是从自己的内心开始的。

discuz 整合总结

相关文章:

你感兴趣的文章:

标签云: