destoon采集论坛

 找回密码
 立即注册
查看: 249|回复: 3

destoon会员注册会员程序修改分析

[复制链接]

13

主题

18

回帖

103

积分

注册会员

Rank: 2

积分
103
发表于 2013-8-13 10:02:40 | 显示全部楼层 |阅读模式
destoon会员注册文件的源代码分析,二次开发中都会用到,

文件路径:module/member/register.inc.php
defined('IN_DESTOON') or exit('Access Denied');

//如果检测到用户登录 那么转到首页

if($_userid) dheader(DT_PATH);

//加载会员模块的配置文件

require DT_ROOT.'/module/'.$module.'/common.inc.php';

//如果检测到打印协议 加载协议模板

if(isset($print)) exit(include template('agreement', $module));

//如果注册关闭了 提示注册已经关闭

if(!$MOD['enable_register']) message($L['register_msg_close'], DT_PATH);
if($MOD['defend_proxy']) {
if($_SERVER['HTTP_X_FORWARDED_FOR'] || $_SERVER['HTTP_VIA'] || $_SERVER['HTTP_PROXY_CONNECTION'] || $_SERVER['HTTP_USER_AGENT_VIA'] || $_SERVER['HTTP_CACHE_INFO'] || $_SERVER['HTTP_PROXY_CONNECTION']) {
message(lang('include->defend_proxy'));
}
}
if($MOD['banagent']) {
$banagent = explode('|', $MOD['banagent']);
foreach($banagent as $v) {
if(strpos($_SERVER['HTTP_USER_AGENT'], $v) !== false) message($L['register_msg_agent'], DT_PATH, 5);
}
}
if($MOD['iptimeout']) {
$timeout = $DT_TIME - $MOD['iptimeout']*3600;
$r = $db->get_one("SELECT userid FROM {$DT_PRE}member WHERE regip='$DT_IP' AND regtime>'$timeout'");
if($r) message(lang($L['register_msg_ip'], array($MOD['iptimeout'])), DT_PATH);
}
if($DT['mail_type'] == 'close' && $MOD['checkuser'] == 2) $MOD['checkuser'] = 0;

//加载两个重要的文件
require DT_ROOT.'/include/post.func.php';
require MD_ROOT.'/member.class.php';

//member类

$do = new member;
$session = new dsession();
$could_emailcode = ($MOD['emailcode_register'] && $DT['mail_type'] != 'close');
if($could_emailcode) {
//$session = new dsession();
if($MOD['checkuser'] == 2) $MOD['checkuser'] = 0;
}
$action_sendcode = crypt_action('sendcode');
if($action == $action_sendcode) {
$email = isset($value) ? trim($value) : '';
if(!is_email($email)) exit('2');
if($do->email_exists($email)) exit('3');
if(!$do->is_email($email)) exit('4');
$emailcode = random(6, '0123456789');
$_SESSION['email'] = $email;
$_SESSION['email_code'] = md5($email.'|'.$emailcode);
$title = $L['register_msg_emailcode'];
$content = ob_template('emailcode', 'mail');
send_mail($email, $title, stripslashes($content));
exit('1');
}

// 加载个人会员和企业会员的字段值
$FD = $MFD = cache_read('fields-member.php');
//这个其实是后台自定义字段 是否在前台显示等的设置
$CFD = cache_read('fields-company.php');
isset($post_fields) or $post_fields = array();
if($MFD || $CFD) require DT_ROOT.'/include/fields.func.php';
$GROUP = cache_read('group.php');
if($submit) {

//注册按钮提交后的运行的代码
//先检测动作是否正确 是不是注册的动作 这个是隐藏参数


//注册页面中的

if($action != crypt_action('register')) dalert($L['check_sign']);
//通行证用户名 可以不管
$post['passport'] = isset($post['passport']) && $post['passport'] ? $post['passport'] : $post['username'];

//uc接口

if($MOD['passport'] == 'uc') {
$passport = convert($post['passport'], DT_CHARSET, $MOD['uc_charset']);
require DT_ROOT.'/api/uc.inc.php';
list($uid, $rt_username, $rt_password, $rt_email) = uc_user_login($passport, $post['password']);
if($uid == -2) dalert($L['register_msg_passport'], '', 'parent.Dd("passport").focus();');
}
$msg = captcha($captcha, $MOD['captcha_register'], true);
if($msg) dalert($msg);
$msg = question($answer, $MOD['question_register'], true);
if($msg) dalert($msg);
//12个小时只允许注册一次 的提示
if($_SESSION['regemail'] != md5(md5($post['email'].DT_KEY.$DT_IP))) dalert($L['check_sign']);
$RG = array();
foreach($GROUP as $k=>$v) {
if($k > 4 && $v['vip'] == 0) $RG[] = $k;
}
$reload_captcha = $MOD['captcha_register'] ? reload_captcha() : '';
$reload_question = $MOD['question_register'] ? reload_question() : '';

//会员类型的判断 如果没有选择 提示 请选择会员组   $L['register_pass_groupid 对应 请选择会员组

in_array($post['regid'], $RG) or dalert($L['register_pass_groupid'], '', $reload_captcha.$reload_question);

//电子邮件 随即数字 验证 对应后台的那个 邮件验证

if($could_emailcode) {
if(!preg_match("/[0-9]{6}/", $post['emailcode']) || $_SESSION['email_code'] != md5($post['email'].'|'.$post['emailcode'])) dalert($L['register_pass_emailcode'], '', $reload_captcha.$reload_question);
}

//如果选择的会员类型是 个人会员 那么 把真实姓名赋给公司名
if($post['regid'] == 5) $post['company'] = $post['truename'];

//如果后台开启了 新会员需要管理员审核 那么会员组id就为4 待审核会员
$post['groupid'] = $MOD['checkuser'] ? 4 : $post['regid'];

//自己新增加的两句代码

$post['bigtype'] =$post['bigtype'];
$post['smalltype'] =$post['smalltype'];
$post['content'] = $post['introduce'] = $post['thumb'] = $post['banner'] = $post['catid'] = $post['catids'] = '';
$post['edittime'] = 0;
$inviter = get_cookie('inviter');
$post['inviter'] = $inviter ? decrypt($inviter) : '';
if($do->add($post)) {
$userid = $do->userid;
$username = $post['username'];
$email = $post['email'];

//fields_update 这个方法控制着 注册的整个写入数据库的过程

if($MFD) fields_update($post_fields, $do->table_member, $userid, 'userid', $MFD);
if($CFD) fields_update($post_fields, $do->table_company, $userid, 'userid', $CFD);
if($MOD['passport'] == 'uc') {
$uid = uc_user_register($passport, $post['password'], $post['email']);
if($uid > 0 && $MOD['uc_bbs']) uc_user_regbbs($uid, $passport, $post['password'], $post['email']);
}



if($MOD['welcome_sms'] && $DT['sms'] && is_mobile($post['mobile'])) {
$message = lang('sms->wel_reg', array($post['truename'], $DT['sitename'], $post['username'], $post['password']));
$message = strip_sms($message);
send_sms($post['mobile'], $message);
}



if($MOD['checkuser'] == 2) {
$auth = make_auth($username);
$db->query("UPDATE {$DT_PRE}member SET auth='$auth',authvalue='$email',authtime='$DT_TIME' WHERE username='$username'");
$authurl = linkurl($MOD['linkurl'], 1).'send.php?action=check&auth='.$auth;
$title = $L['register_msg_activate'];
$content = ob_template('check', 'mail');
send_mail($email, $title, $content);
$goto = $MOD['linkurl'].'goto.php?action=register&email='.$email;
dalert('', '', 'top.window.location="'.$goto.'";');
}



else if($MOD['checkuser'] == 0) {
if($MOD['welcome_message'] || $MOD['welcome_email']) {
$title = $L['register_msg_welcome'];
$content = ob_template('welcome', 'mail');
if($MOD['welcome_message']) send_message($username, $title, $content);
if($MOD['welcome_email'] && $DT['mail_type'] != 'close') send_mail($post['email'], $title, $content);
}
}



if($could_emailcode) $db->query("UPDATE {$DT_PRE}member SET vemail=1 WHERE username='$username'");
session_destroy();
echo 'Login...';
echo '';
echo '';
echo '';
echo '';
echo '';
echo '';
echo '';
echo '
';
exit;
} //if($do->add($post)) 结束
else {
$reload_captcha = $MOD['captcha_register'] ? reload_captcha() : '';
$reload_question = $MOD['question_register'] ? reload_question() : '';
dalert($do->errmsg, '', $reload_captcha.$reload_question);
}

} //if($submit)结束//注册按钮提交后的运行的代码结束

else {
//这个else其实是给注册的模板文件 传递参数的 比如企业类型 经营模式等
$COM_TYPE = explode('|', $MOD['com_type']);
$COM_SIZE = explode('|', $MOD['com_size']);
$COM_MODE = explode('|', $MOD['com_mode']);
$MONEY_UNIT = explode('|', $MOD['money_unit']);
$mode_check = dcheckbox($COM_MODE, 'post[mode][]', '', 'onclick="check_mode(this);"', 0);
$auth = isset($auth) ? rawurldecode($auth) : '';
$username = $password = $email = $passport = '';

if($auth) {
$auth = decrypt($auth);
$auth = explode('|', $auth);
$passport = $auth[0];
if(check_name($passport)) $username = $passport;
$password = $auth[1];
$email = is_email($auth[2]) ? $auth[2] : '';
if($email) $_SESSION['regemail'] = md5(md5($email.DT_KEY.$DT_IP));
}

$areaid = $cityid;
set_cookie('forward_url', $forward);
$destoon_task = 'push=0';
$head_title = $L['register_title'];
include template('register', $module);
}


互联网变成Q.Q群:89786558
程序开发交流Q.Q:187395037
回复

使用道具 举报

29

主题

286

回帖

845

积分

高级会员

Rank: 4

积分
845
发表于 2013-8-13 12:41:59 | 显示全部楼层

{:soso_e183:}留个脚印!支持下楼主
回复 支持 反对

使用道具 举报

14

主题

183

回帖

438

积分

中级会员

Rank: 3Rank: 3

积分
438
发表于 2013-8-13 16:02:49 | 显示全部楼层


高手啊
回复 支持 反对

使用道具 举报

29

主题

286

回帖

845

积分

高级会员

Rank: 4

积分
845
发表于 2013-8-13 17:11:09 | 显示全部楼层

支持啊 很详细的分类
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|destoon采集论坛

GMT+8, 2025-12-17 17:16 , Processed in 0.018455 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表