国内流行的内容管理系统(CMS)多端全媒体解决方案 https://www.dedebiz.com
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

362 lines
14KB

  1. <?php
  2. /**
  3. * @version $Id: reg_new.php 1 8:38 2010年7月9日Z tianya $
  4. * @package DedeCMS.Member
  5. * @copyright Copyright (c) 2007 - 2019, DesDev, Inc.
  6. * @license http://help.dedecms.com/usersguide/license.html
  7. * @link http://www.dedecms.com
  8. */
  9. require_once(dirname(__FILE__)."/config.php");
  10. require_once DEDEINC.'/membermodel.cls.php';
  11. if($cfg_mb_allowreg=='N')
  12. {
  13. ShowMsg('系统关闭了新用户注册!', 'index.php');
  14. exit();
  15. }
  16. if(!isset($dopost)) $dopost = '';
  17. $step = empty($step)? 1 : intval(preg_replace("/[^\d]/", '', $step));
  18. if($step == 1)
  19. {
  20. if($cfg_ml->IsLogin())
  21. {
  22. if($cfg_mb_reginfo == 'Y')
  23. {
  24. //如果启用注册详细信息
  25. if($cfg_ml->fields['spacesta'] == 0 || $cfg_ml->fields['spacesta'] == 1)
  26. {
  27. ShowMsg("尚未完成详细资料,请完善...", "index_do.php?fmdo=user&dopost=regnew&step=2", 0, 1000);
  28. exit;
  29. }
  30. }
  31. ShowMsg('你已经登陆系统,无需重新注册!', 'index.php');
  32. exit();
  33. }
  34. if($dopost=='regbase')
  35. {
  36. $svali = GetCkVdValue();
  37. if(preg_match("/1/", $safe_gdopen)){
  38. if(strtolower($vdcode)!=$svali || $svali=='')
  39. {
  40. ResetVdValue();
  41. ShowMsg('验证码错误!', '-1');
  42. exit();
  43. }
  44. }
  45. $faqkey = isset($faqkey) && is_numeric($faqkey) ? $faqkey : 0;
  46. if($safe_faq_reg == '1')
  47. {
  48. if($safefaqs[$faqkey]['answer'] != $rsafeanswer || $rsafeanswer=='')
  49. {
  50. ShowMsg('验证问题答案错误', '-1');
  51. exit();
  52. }
  53. }
  54. $userid = trim($userid);
  55. $pwd = trim($userpwd);
  56. $pwdc = trim($userpwdok);
  57. $rs = CheckUserID($userid, '用户名');
  58. if($rs != 'ok')
  59. {
  60. ShowMsg($rs, '-1');
  61. exit();
  62. }
  63. if(strlen($userid) > 20 || strlen($uname) > 36)
  64. {
  65. ShowMsg('你的用户名或用户笔名过长,不允许注册!', '-1');
  66. exit();
  67. }
  68. if(strlen($userid) < $cfg_mb_idmin || strlen($pwd) < $cfg_mb_pwdmin)
  69. {
  70. ShowMsg("你的用户名或密码过短,不允许注册!","-1");
  71. exit();
  72. }
  73. if($pwdc != $pwd)
  74. {
  75. ShowMsg('你两次输入的密码不一致!', '-1');
  76. exit();
  77. }
  78. $uname = HtmlReplace($uname, 1);
  79. //用户笔名重复检测
  80. if($cfg_mb_wnameone=='N')
  81. {
  82. $row = $dsql->GetOne("SELECT * FROM `#@__member` WHERE uname LIKE '$uname' ");
  83. if(is_array($row))
  84. {
  85. ShowMsg('用户笔名或公司名称不能重复!', '-1');
  86. exit();
  87. }
  88. }
  89. if(!CheckEmail($email))
  90. {
  91. ShowMsg('Email格式不正确!', '-1');
  92. exit();
  93. }
  94. #api{{
  95. if(defined('UC_API') && @include_once DEDEROOT.'/uc_client/client.php')
  96. {
  97. $uid = uc_user_register($userid, $pwd, $email);
  98. if($uid <= 0)
  99. {
  100. if($uid == -1)
  101. {
  102. ShowMsg("用户名不合法!","-1");
  103. exit();
  104. }
  105. elseif($uid == -2)
  106. {
  107. ShowMsg("包含要允许注册的词语!","-1");
  108. exit();
  109. }
  110. elseif($uid == -3)
  111. {
  112. ShowMsg("你指定的用户名 {$userid} 已存在,请使用别的用户名!","-1");
  113. exit();
  114. }
  115. elseif($uid == -5)
  116. {
  117. ShowMsg("你使用的Email 不允许注册!","-1");
  118. exit();
  119. }
  120. elseif($uid == -6)
  121. {
  122. ShowMsg("你使用的Email已经被另一帐号注册,请使其它帐号","-1");
  123. exit();
  124. }
  125. else
  126. {
  127. ShowMsg("注删失改!","-1");
  128. exit();
  129. }
  130. }
  131. else
  132. {
  133. $ucsynlogin = uc_user_synlogin($uid);
  134. }
  135. }
  136. #/aip}}
  137. if($cfg_md_mailtest=='Y')
  138. {
  139. $row = $dsql->GetOne("SELECT mid FROM `#@__member` WHERE email LIKE '$email' ");
  140. if(is_array($row))
  141. {
  142. ShowMsg('你使用的Email已经被另一帐号注册,请使其它帐号!', '-1');
  143. exit();
  144. }
  145. }
  146. //检测用户名是否存在
  147. $row = $dsql->GetOne("SELECT mid FROM `#@__member` WHERE userid LIKE '$userid' ");
  148. if(is_array($row))
  149. {
  150. ShowMsg("你指定的用户名 {$userid} 已存在,请使用别的用户名!", "-1");
  151. exit();
  152. }
  153. if($safequestion==0)
  154. {
  155. $safeanswer = '';
  156. }
  157. else
  158. {
  159. if(strlen($safeanswer)>30)
  160. {
  161. ShowMsg('你的新安全问题的答案太长了,请控制在30字节以内!', '-1');
  162. exit();
  163. }
  164. }
  165. //会员的默认金币
  166. $dfscores = 0;
  167. $dfmoney = 0;
  168. $dfrank = $dsql->GetOne("SELECT money,scores FROM `#@__arcrank` WHERE rank='10' ");
  169. if(is_array($dfrank))
  170. {
  171. $dfmoney = $dfrank['money'];
  172. $dfscores = $dfrank['scores'];
  173. }
  174. $jointime = time();
  175. $logintime = time();
  176. $joinip = GetIP();
  177. $loginip = GetIP();
  178. $pwd = md5($userpwd);
  179. $mtype = RemoveXSS(HtmlReplace($mtype,1));
  180. $safeanswer = HtmlReplace($safeanswer);
  181. $safequestion = HtmlReplace($safequestion);
  182. $spaceSta = ($cfg_mb_spacesta < 0 ? $cfg_mb_spacesta : 0);
  183. $inQuery = "INSERT INTO `#@__member` (`mtype` ,`userid` ,`pwd` ,`uname` ,`sex` ,`rank` ,`money` ,`email` ,`scores` ,
  184. `matt`, `spacesta` ,`face`,`safequestion`,`safeanswer` ,`jointime` ,`joinip` ,`logintime` ,`loginip` )
  185. VALUES ('$mtype','$userid','$pwd','$uname','$sex','10','$dfmoney','$email','$dfscores',
  186. '0','$spaceSta','','$safequestion','$safeanswer','$jointime','$joinip','$logintime','$loginip'); ";
  187. if($dsql->ExecuteNoneQuery($inQuery))
  188. {
  189. $mid = $dsql->GetLastID();
  190. //写入默认会员详细资料
  191. if($mtype=='个人'){
  192. $space='person';
  193. }else if($mtype=='企业'){
  194. $space='company';
  195. }else{
  196. $space='person';
  197. }
  198. //写入默认统计数据
  199. $membertjquery = "INSERT INTO `#@__member_tj` (`mid`,`article`,`album`,`archives`,`homecount`,`pagecount`,`feedback`,`friend`,`stow`)
  200. VALUES ('$mid','0','0','0','0','0','0','0','0'); ";
  201. $dsql->ExecuteNoneQuery($membertjquery);
  202. //写入默认空间配置数据
  203. $spacequery = "INSERT INTO `#@__member_space`(`mid` ,`pagesize` ,`matt` ,`spacename` ,`spacelogo` ,`spacestyle`, `sign` ,`spacenews`)
  204. VALUES('{$mid}','10','0','{$uname}的空间','','$space','',''); ";
  205. $dsql->ExecuteNoneQuery($spacequery);
  206. //写入其它默认数据
  207. $dsql->ExecuteNoneQuery("INSERT INTO `#@__member_flink`(mid,title,url) VALUES('$mid','织梦内容管理系统','http://www.dedecms.com'); ");
  208. $membermodel = new membermodel($mtype);
  209. $modid=$membermodel->modid;
  210. $modid = empty($modid)? 0 : intval(preg_replace("/[^\d]/",'', $modid));
  211. $modelform = $dsql->getOne("SELECT * FROM #@__member_model WHERE id='$modid' ");
  212. if(!is_array($modelform))
  213. {
  214. showmsg('模型表单不存在', '-1');
  215. exit();
  216. }else{
  217. $dsql->ExecuteNoneQuery("INSERT INTO `{$membermodel->table}` (`mid`) VALUES ('{$mid}');");
  218. }
  219. //----------------------------------------------
  220. //模拟登录
  221. //---------------------------
  222. $cfg_ml = new MemberLogin(7*3600);
  223. $rs = $cfg_ml->CheckUser($userid, $userpwd);
  224. //邮件验证
  225. if($cfg_mb_spacesta==-10)
  226. {
  227. $userhash = md5($cfg_cookie_encode.'--'.$mid.'--'.$email);
  228. $url = $cfg_basehost.(empty($cfg_cmspath) ? '/' : $cfg_cmspath)."/member/index_do.php?fmdo=checkMail&mid={$mid}&userhash={$userhash}&do=1";
  229. $url = preg_replace("#http:\/\/#i", '', $url);
  230. $url = 'http://'.preg_replace("#\/\/#", '/', $url);
  231. $mailtitle = "{$cfg_webname}--会员邮件验证通知";
  232. $mailbody = '';
  233. $mailbody .= "尊敬的用户[{$uname}],您好:\r\n";
  234. $mailbody .= "欢迎注册成为[{$cfg_webname}]的会员。\r\n";
  235. $mailbody .= "要通过注册,还必须进行最后一步操作,请点击或复制下面链接到地址栏访问这地址:\r\n\r\n";
  236. $mailbody .= "{$url}\r\n\r\n";
  237. $mailbody .= "Power by http://www.dedecms.com 织梦内容管理系统!\r\n";
  238. $headers = "From: ".$cfg_adminemail."\r\nReply-To: ".$cfg_adminemail;
  239. if($cfg_sendmail_bysmtp == 'Y' && !empty($cfg_smtp_server))
  240. {
  241. $mailtype = 'TXT';
  242. require_once(DEDEINC.'/mail.class.php');
  243. $smtp = new smtp($cfg_smtp_server,$cfg_smtp_port,true,$cfg_smtp_usermail,$cfg_smtp_password);
  244. $smtp->debug = false;
  245. $smtp->sendmail($email,$cfg_webname,$cfg_smtp_usermail, $mailtitle, $mailbody, $mailtype);
  246. }
  247. else
  248. {
  249. @mail($email, $mailtitle, $mailbody, $headers);
  250. }
  251. }//End 邮件验证
  252. if($cfg_mb_reginfo == 'Y' && $spaceSta >=0)
  253. {
  254. ShowMsg("完成基本信息的注册,接下来完善详细资料...","index_do.php?fmdo=user&dopost=regnew&step=2",0,1000);
  255. exit();
  256. } else {
  257. require_once(DEDEMEMBER."/templets/reg-new3.htm");
  258. exit;
  259. }
  260. } else {
  261. ShowMsg("注册失败,请检查资料是否有误或与管理员联系!", "-1");
  262. exit();
  263. }
  264. }
  265. require_once(DEDEMEMBER."/templets/reg-new.htm");
  266. } else {
  267. if(!$cfg_ml->IsLogin())
  268. {
  269. ShowMsg("尚未完成基本信息的注册,请返回重新填写!", "index_do.php?fmdo=user&dopost=regnew");
  270. exit;
  271. } else {
  272. if($cfg_ml->fields['spacesta'] == 2)
  273. {
  274. ShowMsg('你已经登陆系统,无需重新注册!', 'index.php');
  275. exit;
  276. }
  277. }
  278. $membermodel = new membermodel($cfg_ml->M_MbType);
  279. $postform = $membermodel->getForm(true);
  280. if($dopost == 'reginfo')
  281. {
  282. //这里完成详细内容填写
  283. $dede_fields = empty($dede_fields) ? '' : trim($dede_fields);
  284. $dede_fieldshash = empty($dede_fieldshash) ? '' : trim($dede_fieldshash);
  285. $modid = empty($modid)? 0 : intval(preg_replace("/[^\d]/",'', $modid));
  286. if(!empty($dede_fields))
  287. {
  288. if($dede_fieldshash != md5($dede_fields.$cfg_cookie_encode))
  289. {
  290. showMsg('数据校验不对,程序返回', '-1');
  291. exit();
  292. }
  293. }
  294. $modelform = $dsql->GetOne("SELECT * FROM #@__member_model WHERE id='$modid' ");
  295. if(!is_array($modelform))
  296. {
  297. showmsg('模型表单不存在', '-1');
  298. exit();
  299. }
  300. $inadd_f = '';
  301. if(!empty($dede_fields))
  302. {
  303. $fieldarr = explode(';', $dede_fields);
  304. if(is_array($fieldarr))
  305. {
  306. foreach($fieldarr as $field)
  307. {
  308. if($field == '') continue;
  309. $fieldinfo = explode(',', $field);
  310. if($fieldinfo[1] == 'textdata')
  311. {
  312. ${$fieldinfo[0]} = FilterSearch(stripslashes(${$fieldinfo[0]}));
  313. ${$fieldinfo[0]} = addslashes(${$fieldinfo[0]});
  314. }
  315. else
  316. {
  317. if(empty(${$fieldinfo[0]})) ${$fieldinfo[0]} = '';
  318. ${$fieldinfo[0]} = GetFieldValue(${$fieldinfo[0]}, $fieldinfo[1],0,'add','','diy', $fieldinfo[0]);
  319. }
  320. if($fieldinfo[0]=="birthday") ${$fieldinfo[0]}=GetDateMk(${$fieldinfo[0]});
  321. $inadd_f .= ','.$fieldinfo[0]." ='".${$fieldinfo[0]}."' ";
  322. }
  323. }
  324. }
  325. $query = "UPDATE `{$membermodel->table}` SET `mid`='{$cfg_ml->M_ID}' $inadd_f WHERE `mid`='{$cfg_ml->M_ID}'; ";
  326. if($dsql->executenonequery($query))
  327. {
  328. $dsql->ExecuteNoneQuery("UPDATE `#@__member` SET `spacesta`='2' WHERE `mid`='{$cfg_ml->M_ID}'");
  329. // 清除缓存
  330. $cfg_ml->DelCache($cfg_ml->M_ID);
  331. require_once(DEDEMEMBER."/templets/reg-new3.htm");
  332. exit;
  333. }
  334. }
  335. require_once(DEDEMEMBER."/templets/reg-new2.htm");
  336. }