discuz新的單點論壇(不依賴UCenter)

2021-09-07 11:39:03 字數 2228 閱讀 2663

discuz 本身提供ucenter使用者中心能夠實現單點登入。

可是其它應用要單點登入到discuz還是存在若干問題:

須要2次啟用。可能造成server無響應,論壇顯示的最新註冊使用者無法同步更新,官網沒有提供其它語言的api

等這裡提供了段**。在bbs根資料夾下儲存例如以下php**go.php

<?php

/**

*     zj53hao 20140418 外部程式單點登入到discuz(同步註冊和登入到discuz) 

*/define('norobot', false);

define('adminscript', basename(__file__));

define('curscript', 'admin');

define('hooktype', 'hookscript');

//define('curmodule', $mod);

require './source/class/class_core.php';

$discuz->init();

require libfile('function/member');

require libfile('class/member');

runhooks();

$newusername = trim($_get['newusername']);

$newpassword = 'www.***x.com';//trim($_get['newpassword']);

$newemail = isset($_get['newemail'])?

strtolower(trim($_get['newemail'])):$newusername.'@***.com'; if(!$newusername || !$newemail) // 下面幾句防止第3方偽造 $time= (int)($_get["time"]); $curdate= time(); $seckey=$time.$newusername.'www.***.com'; $seckey= md5($seckey); if($curdate-$time>1200 || $seckey!=$_get['code']) $_g['uid']=''; $userid=c::t('common_member')->fetch_uid_by_username($newusername); $_server['request_method'] = 'post';//註冊須要模擬post防止2次校驗不通過 $_get['formhash'] = formhash();// 防止 2次校驗不通過 $_g['group']['seccode']='';// 防止 2次校驗不通過 if(!$userid) //uc_user_synlogout(); $_g['groupid'] = $_g['member']['groupid'] = 7; $_g['uid'] = $_g['member']['uid'] = 0; $_g['username'] = $_g['member']['username'] = $_g['member']['password'] = ''; // 登陸 $_get['loginsubmit']='yes'; $_get['lssubmit']=''; $_get['username']=$newusername; $_get['password']= $newpassword; $ctl_obj = new logging_ctl(); $ctl_obj->setting = $_g['setting']; $ctl_obj->template = 'member/login'; $ctl_obj->on_login(); ?

主要原理是其它web應用跳轉該url並帶上username。和登入檢驗串。如

在論壇裡推斷使用者是否存在。

不存在則呼叫註冊模組。存在則登入新使用者,假設之前登入過別的使用者也會被切換該使用者。

當中 使用自己的防止第3方的惡意提交的**,並通過暫時開關去掉論壇本身的檢驗**。

$seckey=$time.$newusername.'www.***.com';
主要用linux時間戳和使用者名稱。加兩方協商好的乙個秘鑰傳再md5加密。匹配後才算驗證通過。同樣的串僅僅能在1200秒內有效

眼下對discuzx3有效。其它版本號未測試。

git 不依賴於原來分支建立新分支

不知道大家使用git作為 管理工具的機會多不多,現在公司就是使用git作為 管理工具 git真的是不錯的 管理工具,而且越使用越覺得方便 git裡面很多功能,今天記錄其中乙個功能 在專案中修改bug的時候,經常遇到正在修復乙個bug,然後又要求你去解決另外乙個bug的問題。那麼怎麼儲存之前的修改呢?...

Groovy書寫不依賴與實體的GORM

最近在寫乙個專案,它要求使用者能夠自主選擇元件進行建表並實現資料庫的增刪改查操作。這個需求的重點在於資料表本身不固定,無法事先確定表和實體,我們的設想是利用前端將使用者的選擇結果轉化成乙個jsonlist物件,後台通過解析json串後,利用sql語句的拼接實現建庫以及gorm操作。專案運用grail...

不依賴堆疊的鍊錶反轉 java實現

import datastruct.linknode public class linklistreverse linknode head llr.initlist a linknode after llr.linkreverse head while after.getnext null priv...