国内流行的内容管理系统(CMS)多端全媒体解决方案 https://www.dedebiz.com
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

421 lignes
16KB

  1. <?php
  2. /**
  3. * @version $Id: index_do.php 1 8:24 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. if(empty($dopost)) $dopost = '';
  11. if(empty($fmdo)) $fmdo = '';
  12. /*********************
  13. function check_email()
  14. *******************/
  15. if($fmdo=='sendMail')
  16. {
  17. if(!CheckEmail($cfg_ml->fields['email']) )
  18. {
  19. ShowMsg('你的邮箱格式有错误!', '-1');
  20. exit();
  21. }
  22. if($cfg_ml->fields['spacesta'] != -10)
  23. {
  24. ShowMsg('你的帐号不在邮件验证状态,本操作无效!', '-1');
  25. exit();
  26. }
  27. $userhash = md5($cfg_cookie_encode.'--'.$cfg_ml->fields['mid'].'--'.$cfg_ml->fields['email']);
  28. $url = $cfg_basehost.(empty($cfg_cmspath) ? '/' : $cfg_cmspath)."/member/index_do.php?fmdo=checkMail&mid={$cfg_ml->fields['mid']}&userhash={$userhash}&do=1";
  29. $url = preg_replace("#http:\/\/#i", '', $url);
  30. $url = 'http://'.preg_replace("#\/\/#i", '/', $url);
  31. $mailtitle = "{$cfg_webname}--会员邮件验证通知";
  32. $mailbody = '';
  33. $mailbody .= "尊敬的用户[{$cfg_ml->fields['uname']}],您好:\r\n";
  34. $mailbody .= "欢迎注册成为[{$cfg_webname}]的会员。\r\n";
  35. $mailbody .= "要通过注册,还必须进行最后一步操作,请点击或复制下面链接到地址栏访问这地址:\r\n\r\n";
  36. $mailbody .= "{$url}\r\n\r\n";
  37. $mailbody .= "Power by http://www.dedecms.com 织梦内容管理系统!\r\n";
  38. $headers = "From: ".$cfg_adminemail."\r\nReply-To: ".$cfg_adminemail;
  39. if($cfg_sendmail_bysmtp == 'Y' && !empty($cfg_smtp_server))
  40. {
  41. $mailtype = 'TXT';
  42. require_once(DEDEINC.'/mail.class.php');
  43. $smtp = new smtp($cfg_smtp_server,$cfg_smtp_port,true,$cfg_smtp_usermail,$cfg_smtp_password);
  44. $smtp->debug = false;
  45. $smtp->sendmail($cfg_ml->fields['email'],$cfg_webname ,$cfg_smtp_usermail, $mailtitle, $mailbody, $mailtype);
  46. }
  47. else
  48. {
  49. @mail($cfg_ml->fields['email'], $mailtitle, $mailbody, $headers);
  50. }
  51. ShowMsg('成功发送邮件,请稍后登录你的邮箱进行接收!', '/member');
  52. exit();
  53. }
  54. else if($fmdo=='checkMail')
  55. {
  56. $mid = intval($mid);
  57. if(empty($mid))
  58. {
  59. ShowMsg('你的效验串不合法!', '-1');
  60. exit();
  61. }
  62. $row = $dsql->GetOne("SELECT * FROM `#@__member` WHERE mid='{$mid}' ");
  63. $needUserhash = md5($cfg_cookie_encode.'--'.$mid.'--'.$row['email']);
  64. if($needUserhash != $userhash)
  65. {
  66. ShowMsg('你的效验串不合法!', '-1');
  67. exit();
  68. }
  69. if($row['spacesta'] != -10)
  70. {
  71. ShowMsg('你的帐号不在邮件验证状态,本操作无效!', '-1');
  72. exit();
  73. }
  74. $dsql->ExecuteNoneQuery("UPDATE `#@__member` SET spacesta=0 WHERE mid='{$mid}' ");
  75. // 清除会员缓存
  76. $cfg_ml->DelCache($mid);
  77. ShowMsg('操作成功,请重新登录系统!', 'login.php');
  78. exit();
  79. }
  80. /*********************
  81. function Case_user()
  82. *******************/
  83. else if($fmdo=='user')
  84. {
  85. //检查用户名是否存在
  86. if($dopost=="checkuser")
  87. {
  88. AjaxHead();
  89. $msg = '';
  90. $uid = trim($uid);
  91. if($cktype==0)
  92. {
  93. $msgtitle='用户笔名';
  94. }
  95. else
  96. {
  97. #api{{
  98. if(defined('UC_API') && @include_once DEDEROOT.'/uc_client/client.php')
  99. {
  100. $ucresult = uc_user_checkname($uid);
  101. if($ucresult > 0)
  102. {
  103. echo "<font color='#4E7504'><b>√用户名可用</b></font>";
  104. }
  105. elseif($ucresult == -1)
  106. {
  107. echo "<font color='red'><b>×用户名不合法</b></font>";
  108. }
  109. elseif($ucresult == -2)
  110. {
  111. echo "<font color='red'><b>×包含要允许注册的词语</b></font>";
  112. }
  113. elseif($ucresult == -3)
  114. {
  115. echo "<font color='red'><b>×用户名已经存在</b></font>";
  116. }
  117. exit();
  118. }
  119. #/aip}}
  120. $msgtitle='用户名';
  121. }
  122. if($cktype!=0 || $cfg_mb_wnameone=='N') {
  123. $msg = CheckUserID($uid, $msgtitle);
  124. }
  125. else {
  126. $msg = CheckUserID($uid, $msgtitle, false);
  127. }
  128. if($msg=='ok')
  129. {
  130. $msg = "<font color='#4E7504'><b>√{$msgtitle}可以使用</b></font>";
  131. }
  132. else
  133. {
  134. $msg = "<font color='red'><b>×{$msg}</b></font>";
  135. }
  136. echo $msg;
  137. exit();
  138. }
  139. //检查email是否存在
  140. else if($dopost=="checkmail")
  141. {
  142. AjaxHead();
  143. #api{{
  144. if(defined('UC_API') && @include_once DEDEROOT.'/uc_client/client.php')
  145. {
  146. $ucresult = uc_user_checkemail($email);
  147. if($ucresult > 0) {
  148. echo "<font color='#4E7504'><b>√可以使用</b></font>";
  149. } elseif($ucresult == -4) {
  150. echo "<font color='red'><b>×Email 格式有误!</b></font>";
  151. } elseif($ucresult == -5) {
  152. echo "<font color='red'><b>×Email 不允许注册!</b></font>";
  153. } elseif($ucresult == -6) {
  154. echo "<font color='red'><b>×该 Email 已经被注册!</b></font>";
  155. }
  156. exit();
  157. }
  158. #/aip}}
  159. if($cfg_md_mailtest=='N')
  160. {
  161. $msg = "<font color='#4E7504'><b>√可以使用</b></font>";
  162. }
  163. else
  164. {
  165. if(!CheckEmail($email))
  166. {
  167. $msg = "<font color='#4E7504'><b>×Email格式有误</b></font>";
  168. }
  169. else
  170. {
  171. $row = $dsql->GetOne("SELECT mid FROM `#@__member` WHERE email LIKE '$email' LIMIT 1");
  172. if(!is_array($row)) {
  173. $msg = "<font color='#4E7504'><b>√可以使用</b></font>";
  174. }
  175. else {
  176. $msg = "<font color='red'><b>×Email已经被另一个帐号占用!</b></font>";
  177. }
  178. }
  179. }
  180. echo $msg;
  181. exit();
  182. }
  183. //引入注册页面
  184. else if($dopost=="regnew")
  185. {
  186. $step = empty($step)? 1 : intval(preg_replace("/[^\d]/",'', $step));
  187. require_once(dirname(__FILE__)."/reg_new.php");
  188. exit();
  189. }
  190. /***************************
  191. //积分换金币
  192. function money2s() { }
  193. ***************************/
  194. else if($dopost=="money2s")
  195. {
  196. CheckRank(0,0);
  197. if($cfg_money_scores==0)
  198. {
  199. ShowMsg('系统禁用了积分与金币兑换功能!', '-1');
  200. exit();
  201. }
  202. $money = empty($money) ? "" : abs(intval($money));
  203. if(empty($money))
  204. {
  205. ShowMsg('您没指定要兑换多少金币!', '-1');
  206. exit();
  207. }
  208. $needscores = $money * $cfg_money_scores;
  209. if($cfg_ml->fields['scores'] < $needscores )
  210. {
  211. ShowMsg('您积分不足,不能换取这么多的金币!', '-1');
  212. exit();
  213. }
  214. $litmitscores = $cfg_ml->fields['scores'] - $needscores;
  215. //保存记录
  216. $mtime = time();
  217. $inquery = "INSERT INTO `#@__member_operation`(`buyid` , `pname` , `product` , `money` , `mtime` , `pid` , `mid` , `sta` ,`oldinfo`)
  218. VALUES ('ScoresToMoney', '积分换金币操作', 'stc' , '0' , '$mtime' , '0' , '{$cfg_ml->M_ID}' , '0' , '用 {$needscores} 积分兑了换金币:{$money} 个'); ";
  219. $dsql->ExecuteNoneQuery($inquery);
  220. //修改积分与金币值
  221. $dsql->ExecuteNoneQuery("UPDATE `#@__member` SET `scores`=$litmitscores, money= money + $money WHERE mid='".$cfg_ml->M_ID."' ");
  222. // 清除会员缓存
  223. $cfg_ml->DelCache($cfg_ml->M_ID);
  224. ShowMsg('成功兑换指定量的金币!', 'operation.php');
  225. exit();
  226. }
  227. }
  228. /*********************
  229. function login()
  230. *******************/
  231. else if($fmdo=='login')
  232. {
  233. //用户登录
  234. if($dopost=="login")
  235. {
  236. if(!isset($vdcode))
  237. {
  238. $vdcode = '';
  239. }
  240. $svali = GetCkVdValue();
  241. if(preg_match("/2/",$safe_gdopen)){
  242. if(strtolower($vdcode)!=$svali || $svali=='')
  243. {
  244. ResetVdValue();
  245. ShowMsg('验证码错误!', 'index.php');
  246. exit();
  247. }
  248. }
  249. if(CheckUserID($userid,'',false)!='ok')
  250. {
  251. ResetVdValue();
  252. ShowMsg("你输入的用户名 {$userid} 不合法!","index.php");
  253. exit();
  254. }
  255. if($pwd=='')
  256. {
  257. ResetVdValue();
  258. ShowMsg("密码不能为空!","-1",0,2000);
  259. exit();
  260. }
  261. //检查帐号
  262. $rs = $cfg_ml->CheckUser($userid,$pwd);
  263. #api{{
  264. if(defined('UC_API') && @include_once DEDEROOT.'/uc_client/client.php')
  265. {
  266. //检查帐号
  267. list($uid, $username, $password, $email) = uc_user_login($userid, $pwd);
  268. if($uid > 0) {
  269. $password = md5($password);
  270. //当UC存在用户,而CMS不存在时,就注册一个
  271. if(!$rs) {
  272. //会员的默认金币
  273. $row = $dsql->GetOne("SELECT `money`,`scores` FROM `#@__arcrank` WHERE `rank`='10' ");
  274. $scores = is_array($row) ? $row['scores'] : 0;
  275. $money = is_array($row) ? $row['money'] : 0;
  276. $logintime = $jointime = time();
  277. $loginip = $joinip = GetIP();
  278. $res = $dsql->ExecuteNoneQuery("INSERT INTO #@__member SET `mtype`='个人',`userid`='$username',`pwd`='$password',`uname`='$username',`sex`='男' ,`rank`='10',`money`='$money', `email`='$email', `scores`='$scores', `matt`='0', `face`='',`safequestion`='0',`safeanswer`='', `jointime`='$jointime',`joinip`='$joinip',`logintime`='$logintime',`loginip`='$loginip';");
  279. if($res) {
  280. $mid = $dsql->GetLastID();
  281. $data = array
  282. (
  283. 0 => "INSERT INTO `#@__member_person` SET `mid`='$mid', `onlynet`='1', `sex`='男', `uname`='$username', `qq`='', `msn`='', `tel`='', `mobile`='', `place`='', `oldplace`='0' ,
  284. `birthday`='1980-01-01', `star`='1', `income`='0', `education`='0', `height`='160', `bodytype`='0', `blood`='0', `vocation`='0', `smoke`='0', `marital`='0', `house`='0',
  285. `drink`='0', `datingtype`='0', `language`='', `nature`='', `lovemsg`='', `address`='',`uptime`='0';",
  286. 1 => "INSERT INTO `#@__member_tj` SET `mid`='$mid',`article`='0',`album`='0',`archives`='0',`homecount`='0',`pagecount`='0',`feedback`='0',`friend`='0',`stow`='0';",
  287. 2 => "INSERT INTO `#@__member_space` SET `mid`='$mid',`pagesize`='10',`matt`='0',`spacename`='{$uname}的空间',`spacelogo`='',`spacestyle`='person', `sign`='',`spacenews`='';",
  288. 3 => "INSERT INTO `#@__member_flink` SET `mid`='$mid', `title`='织梦内容管理系统', `url`='http://www.dedecms.com';"
  289. );
  290. foreach($data as $val) $dsql->ExecuteNoneQuery($val);
  291. }
  292. }
  293. $rs = 1;
  294. $row = $dsql->GetOne("SELECT `mid`, `pwd` FROM #@__member WHERE `userid`='$username'");
  295. if(isset($row['mid']))
  296. {
  297. $cfg_ml->PutLoginInfo($row['mid']);
  298. if($password!=$row['pwd']) $dsql->ExecuteNoneQuery("UPDATE #@__member SET `pwd`='$password' WHERE mid='$row[mid]'");
  299. }
  300. //生成同步登录的代码
  301. $ucsynlogin = uc_user_synlogin($uid);
  302. } else if($uid == -1) {
  303. //当UC不存在该用而CMS存在,就注册一个.
  304. if($rs) {
  305. $row = $dsql->GetOne("SELECT `email` FROM #@__member WHERE userid='$userid'");
  306. $uid = uc_user_register($userid, $pwd, $row['email']);
  307. if($uid > 0) $ucsynlogin = uc_user_synlogin($uid);
  308. } else {
  309. $rs = -1;
  310. }
  311. } else {
  312. $rs = -1;
  313. }
  314. }
  315. #/aip}}
  316. if($rs==0)
  317. {
  318. ResetVdValue();
  319. ShowMsg("用户名不存在!", "index.php", 0, 2000);
  320. exit();
  321. }
  322. else if($rs==-1) {
  323. ResetVdValue();
  324. ShowMsg("密码错误!", "index.php", 0, 2000);
  325. exit();
  326. }
  327. else if($rs==-2) {
  328. ResetVdValue();
  329. ShowMsg("管理员帐号不允许从前台登录!", "index.php", 0, 2000);
  330. exit();
  331. }
  332. else
  333. {
  334. // 清除会员缓存
  335. $cfg_ml->DelCache($cfg_ml->M_ID);
  336. if(empty($gourl) || preg_match("#action|_do#i", $gourl))
  337. {
  338. ShowMsg("成功登录,5秒钟后转向系统主页...","index.php",0,2000);
  339. }
  340. else
  341. {
  342. $gourl = str_replace('^','&',$gourl);
  343. ShowMsg("成功登录,现在转向指定页面...",$gourl,0,2000);
  344. }
  345. exit();
  346. }
  347. }
  348. //退出登录
  349. else if($dopost=="exit")
  350. {
  351. $cfg_ml->ExitCookie();
  352. #api{{
  353. if(defined('UC_API') && @include_once DEDEROOT.'/uc_client/client.php')
  354. {
  355. $ucsynlogin = uc_user_synlogout();
  356. }
  357. #/aip}}
  358. ShowMsg("成功退出登录!","index.php",0,2000);
  359. exit();
  360. }
  361. }
  362. /*********************
  363. function moodmsg()
  364. *******************/
  365. else if($fmdo=='moodmsg')
  366. {
  367. //用户登录
  368. if($dopost=="sendmsg")
  369. {
  370. if(!empty($content))
  371. {
  372. $ip = GetIP();
  373. $dtime = time();
  374. $ischeck = ($cfg_mb_msgischeck == 'Y')? 0 : 1;
  375. if($cfg_soft_lang == 'gb2312')
  376. {
  377. $content = utf82gb(nl2br($content));
  378. }
  379. $content = cn_substrR(HtmlReplace($content,1),360);
  380. //对表情进行解析
  381. $content = addslashes(preg_replace("/\[face:(\d{1,2})\]/is","<img src='".$cfg_memberurl."/templets/images/smiley/\\1.gif' style='cursor: pointer; position: relative;'>",$content));
  382. $content = RemoveXSS($content);
  383. $inquery = "INSERT INTO `#@__member_msg`(`mid`,`userid`,`ip`,`ischeck`,`dtime`, `msg`)
  384. VALUES ('{$cfg_ml->M_ID}','{$cfg_ml->M_LoginID}','$ip','$ischeck','$dtime', '$content'); ";
  385. $rs = $dsql->ExecuteNoneQuery($inquery);
  386. if(!$rs)
  387. {
  388. $output['type'] = 'error';
  389. $output['data'] = '更新失败,请重试.';
  390. exit();
  391. }
  392. $output['type'] = 'success';
  393. if($cfg_soft_lang == 'gb2312')
  394. {
  395. $content = utf82gb(nl2br($content));
  396. }
  397. $output['data'] = stripslashes($content);
  398. exit(json_encode($output));
  399. }
  400. }
  401. }
  402. else
  403. {
  404. ShowMsg("本页面禁止返回!","index.php");
  405. }