Discuz!註冊介面.可以不用跳轉到Discuz!頁面.
阿新 • • 發佈:2019-01-23
<?
// Discuz! orumdatacachecache_settings.php
$authkey='ece1b5LV9brA5wXR';//論壇的 authkey
$array=array (
'action'=>'register',// login,register
'username'=>'usename',
'password'=>'000000',
'questionid'=>'',
'answer'=>'',
);
$sign=$url='';
foreach($arrayas$key=>$val) {
$sign.='&'.$key .'='.$val;
$urlstr.=$key.'='.rawurlencode($val).'&';
}
$sign=md5($sign.$authkey);
/////////////////////////////////////////////////////////////////////////////////
/**
* 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 編碼結果
returnbase64_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($arrayas$key=>$val) {
// $arrayenc 陣列增加一個元素,其內容為 "$key=經過 urlencode() 後的 $val 值"
$arrayenc[] =$key.'='.urlencode($val);
}
// 返回以 "&" 連線的 $arrayenc 的值(implode),例如 $arrayenc = array('aa', 'bb', 'cc', 'dd'),
// 則 implode('&', $arrayenc) 後的結果為 ”aa&bb&cc&dd"
returnimplode('&',$arrayenc);
}
$returnFlg=implode('',file('http://192.168.0.118:433/Discuz/api/userprofile.php?sign='.$sign.'&'.$urlstr));
echo$returnFlg ;
/*
if( $returnFlg == "1" )
{
header("Location: http://192.168.0.118:433/Discuz/index.php");
}
*/
// Discuz! orumdatacachecache_settings.php
$authkey='ece1b5LV9brA5wXR';//論壇的 authkey
$array=array (
'action'=>'register',// login,register
'username'=>'usename',
'password'=>'000000',
'questionid'=>'',
'answer'=>'',
);
$sign=$url='';
foreach($arrayas$key=>$val) {
$sign.='&'.$key
$urlstr.=$key.'='.rawurlencode($val).'&';
}
$sign=md5($sign.$authkey);
/////////////////////////////////////////////////////////////////////////////////
/**
* Passport 加密函式
*
* @param string 等待加密的原字串
* @param string 私有密匙(用於解密和加密)
*
* @return string 原字串經過私有密匙加密後的結果
*/
function passport_encrypt($txt,$key) {
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;
// 第二位內容為 $txt 的第 $i 位與 $encrypt_key 的 $ctr 位取異或。然後 $ctr = $ctr + 1
$tmp.=$encrypt_key[$ctr].($txt[$i] ^$encrypt_key[$ctr++]);
}
// 返回結果,結果為 passport_key() 函式返回值的 base64 編碼結果
returnbase64_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($arrayas$key=>$val) {
// $arrayenc 陣列增加一個元素,其內容為 "$key=經過 urlencode() 後的 $val 值"
$arrayenc[] =$key.'='.urlencode($val);
}
// 返回以 "&" 連線的 $arrayenc 的值(implode),例如 $arrayenc = array('aa', 'bb', 'cc', 'dd'),
// 則 implode('&', $arrayenc) 後的結果為 ”aa&bb&cc&dd"
returnimplode('&',$arrayenc);
}
$returnFlg=implode('',file('http://192.168.0.118:433/Discuz/api/userprofile.php?sign='.$sign.'&'.$urlstr));
echo$returnFlg ;
/*
if( $returnFlg == "1" )
{
header("Location: http://192.168.0.118:433/Discuz/index.php");
}
*/