Discuz3 3註冊程式修改新增記錄推薦人賬號

2022-04-28 21:48:44 字數 3174 閱讀 5243

discuz3.3註冊入口位址為:member.php?mod=register

一.member.php:

開啟之後,**非常簡單。

其中有一句:

1

$mod = !in_array($discuz->var['mod'], $modarray) && (!preg_match('/^\w+$/', $discuz->var['mod']) || !file_exists(discuz_root.'./source/module/member/member_'.$discuz->var['mod'].'.php')) ? 'register' : $discuz->var['mod'];

這一句裡面的 $discuz->var['mod']**,有專門的技術貼分析:

1

require libfile('function/member');//

載入menber 函式

2require libfile('class/member');//

載入menber 類庫

3 runhooks(); //

執行hook點45

require discuz_root.'./source/module/member/member_'.$mod.'.php';//

載入member_register.php頁面。

從這裡面來看,主要註冊程式頁為:source/module/member/member_register.php頁面。

二.source/module/member/member_register.php:

if(!defined('in_discuz')) 

//**檢測

define('norobot', true

);$ctl_obj = new register_ctl();//

例項化register_ctl類

$ctl_obj->setting = $_g['setting'];//

獲取全域性變數中setting值

$ctl_obj->template = 'member/register';//

載入模板template\default\member\register.htm

$ctl_obj->on_register();//

執行on_register函式

註冊執行的主函式為:register_ctl類中的on_register(),register_ctl類的位置是:source/class/class_member.php檔案中。這個檔案在第一部分已經通重載入類庫方式載入。

三.source/class/class_member.php:

function

register_ctl(){}

function on_register(){}

這個檔案只有這兩個函式,register_ctl(){}初始化,載入相關類庫。on_register()註冊程式。

註冊程式很長,選幾個關鍵點來看:

大約700行左右(這個程式頁面我稍微修改過,跟官方原版略有區別):

if(!$activation

)

**很簡單,呼叫了call_user_func()方法實現了多介面復用。其中引數:

uc_api_func引數在該頁面頭部定義了:

define('uc_api_func', uc_connect == 'mysql' ? 'uc_api_mysql' : 'uc_api_post');//

在我這邊連線方式是mysql,根據配置,也可以使用api post方式傳送使用者註冊資訊。

uc_api_mysql()函式,在本頁面上部定義了:

function uc_api_mysql($model, $action, $args=array

())

else

include_once uc_root.'./model/base.php';

include_once uc_root."./control/$model.php";

eval("\$uc_controls['$model'] = new control();");

}if($action != '_')

else

}

include_once uc_root."./control/$model.php";表示載入/control/user.php模組。

$action = 'on'.$action;表示呼叫函式onregister();

五.uc_client\control\user.php:

function

onregister()

if(($status = $this->_check_email($email)) < 0)

$uid = $_env['user']->add_user($username, $password, $email, 0, $questionid, $answer, $regip, $fromuser);//

這一行是我修改的推薦人賬號傳參。

return

$uid

; }

$_env是php中的乙個包含伺服器端環境變數的陣列。它是php中乙個超級全域性變數,我們可以在php程式的任何地方直接訪問它。

在 uc_client/model/base.php 中,使用了load()方法定義了 $_env[$model] 並賦值。

function load($model, $base = null

)

return

$_env[$model

];}

這裡的作用,我們不深究,知道這裡呼叫的是uc_root."./model/user.php中的add_user()方法。

六.uc_client/model/user.php:

大約l129:

function add_user($username, $password, $email, $uid = 0, $questionid = '', $answer = '', $regip = '', $fromuser = '')

所有需要修改的部分就完成了。總共涉及6個頁面。

窗體程式修改

見第乙個窗體程式 兌現承諾!程式修改說明 依然沒有對介面進行優化,但那是遲早的事,首先考慮的當然是功能完善。1 把布局再調整一下,按鍵部分確定為0 9,退格,機選1注,機選5注 清除1 清除5。2 為0 9及退格按鈕設定對應的響應函式click,command命令用lambda函式動態捕捉0 9及退...

java 程式修改系統時間

runtime.getruntime exec cmd c date 2013 05 06 windows 系統 runtime.getruntime exec cmd c time 22 35 00 windows 系統runtime.getruntime exec sudo date s 201...

魔獸改鍵程式修改

前兩天的改鍵程式修改後基本可用,貼 using system using system.collections.generic using system.runtime.interopservices using system.windows.forms namespace war3keywizar...