国内流行的内容管理系统(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.

265 lines
11KB

  1. <?php
  2. /**
  3. * 会员登录
  4. *
  5. * @version $id:login.php 8:38 2010年7月9日 tianya $
  6. * @package DedeBIZ.User
  7. * @copyright Copyright (c) 2022 DedeBIZ.COM
  8. * @license https://www.dedebiz.com/license
  9. * @link https://www.dedebiz.com
  10. */
  11. require_once(dirname(__FILE__)."/config.php");
  12. if (empty($dopost)) $dopost = '';
  13. if (empty($fmdo)) $fmdo = '';
  14. if ($fmdo == 'sendMail') {
  15. if (!CheckEmail($cfg_ml->fields['email'])) {
  16. ShowMsg('您的邮箱格式有错误', '-1');
  17. exit();
  18. }
  19. if ($cfg_ml->fields['spacesta'] != -10) {
  20. ShowMsg('您的帐号不在邮件验证状态,本操作无效', '-1');
  21. exit();
  22. }
  23. $userhash = md5($cfg_cookie_encode.'--'.$cfg_ml->fields['mid'].'--'.$cfg_ml->fields['email']);
  24. $url = $cfg_basehost.(empty($cfg_cmspath) ? '/' : $cfg_cmspath)."/user/index_do.php?fmdo=checkMail&mid={$cfg_ml->fields['mid']}&userhash={$userhash}&do=1";
  25. $url = preg_replace("#http:\/\/#i", '', $url);
  26. $proto = IsSSL()? "https://" : "http://";
  27. $url = $proto.preg_replace("#\/\/#i", '/', $url);
  28. $mailtitle = "{$cfg_webname},会员邮件验证通知";
  29. $mailbody = '';
  30. $mailbody .= "尊敬的会员<span class='text-primary'>{$cfg_ml->fields['uname']}</span>,欢迎注册成为<span class='text-primary'>{$cfg_webname}</span>会员\r\n";
  31. $mailbody .= "要通过注册,还必须进行最后一步操作,请点击或复制下面链接到地址栏浏览这地址:\r\n";
  32. $mailbody .= "{$url}\r\n";
  33. $headers = "From: ".$cfg_adminemail."\r\nReply-To: ".$cfg_adminemail;
  34. if (!empty($cfg_bizcore_appid) && !empty($cfg_bizcore_key)) {
  35. $client = new DedeBizClient();
  36. $client->MailSend($cfg_ml->fields['email'],$mailtitle,$mailtitle,$mailbody);
  37. $client->Close();
  38. } else {
  39. if ($cfg_sendmail_bysmtp == 'Y' && !empty($cfg_smtp_server)) {
  40. $mailtype = 'HTML';
  41. require_once(DEDEINC.'/libraries/mail.class.php');
  42. $smtp = new smtp($cfg_smtp_server, $cfg_smtp_port, true, $cfg_smtp_usermail, $cfg_smtp_password);
  43. $smtp->debug = false;
  44. $smtp->sendmail($cfg_ml->fields['email'], $cfg_webname, $cfg_smtp_usermail, $mailtitle, $mailbody, $mailtype);
  45. } else {
  46. @mail($cfg_ml->fields['email'], $mailtitle, $mailbody, $headers);
  47. }
  48. }
  49. ShowMsg('成功发送邮件,请稍后登录您的邮箱进行接收', 'index.php');
  50. exit();
  51. } else if ($fmdo == 'checkMail') {
  52. $mid = intval($mid);
  53. if (empty($mid)) {
  54. ShowMsg('您的效验串不合法', '-1');
  55. exit();
  56. }
  57. $row = $dsql->GetOne("SELECT * FROM `#@__member` WHERE mid='{$mid}' ");
  58. $needUserhash = md5($cfg_cookie_encode.'--'.$mid.'--'.$row['email']);
  59. if ($needUserhash != $userhash) {
  60. ShowMsg('您的效验串不合法', '-1');
  61. exit();
  62. }
  63. if ($row['spacesta'] != -10) {
  64. ShowMsg('操作无效,您的帐号不在邮件验证状态', '-1');
  65. exit();
  66. }
  67. $dsql->ExecuteNoneQuery("UPDATE `#@__member` SET spacesta=0 WHERE mid='{$mid}' ");
  68. //清除会员缓存
  69. $cfg_ml->DelCache($mid);
  70. ShowMsg('会员缓存已清理', 'login.php');
  71. exit();
  72. } else if ($fmdo == 'user') {
  73. //检查会员名是否存在
  74. if ($dopost == "checkuser") {
  75. AjaxHead();
  76. $msg = '';
  77. $uid = trim($uid);
  78. if ($cktype == 0) {
  79. $msgtitle = '会员名';
  80. } else {
  81. $msgtitle = '会员名';
  82. }
  83. if ($cktype != 0 || $cfg_mb_wnameone == 'N') {
  84. $msg = CheckUserID($uid, $msgtitle);
  85. } else {
  86. $msg = CheckUserID($uid, $msgtitle, false);
  87. }
  88. if ($msg == 'ok') {
  89. $msg = "<span class='text-success'><i class='fa fa-check'></i> {$msgtitle}可以使用</span>";
  90. } else {
  91. $msg = "<span class='text-danger'><i class='fa fa-times'></i> {$msg}</span>";
  92. }
  93. echo $msg;
  94. exit();
  95. }
  96. //检查邮箱是否存在
  97. else if ($dopost == "checkmail") {
  98. AjaxHead();
  99. if ($cfg_md_mailtest == 'N') {
  100. $msg = "<span class='text-success'><i class='fa fa-check'></i> 可以使用</span>";
  101. } else {
  102. if (!CheckEmail($email)) {
  103. $msg = "<span class='text-danger'><i class='fa fa-times'></i> 邮箱格式有误</span>";
  104. } else {
  105. $row = $dsql->GetOne("SELECT mid FROM `#@__member` WHERE email LIKE '$email' LIMIT 1");
  106. if (!is_array($row)) {
  107. $msg = "<span class='text-success'><i class='fa fa-check'></i> 可以使用</span>";
  108. } else {
  109. $msg = "<span class='text-danger'><i class='fa fa-times'></i> 邮箱已经被另一个会员占用</span>";
  110. }
  111. }
  112. }
  113. echo $msg;
  114. exit();
  115. }
  116. //引入注册页面
  117. else if ($dopost == "regnew") {
  118. $step = empty($step) ? 1 : intval(preg_replace("/[^\d]/", '', $step));
  119. require_once(dirname(__FILE__)."/reg_new.php");
  120. exit();
  121. }
  122. //积分换金币
  123. else if ($dopost == "money2s") {
  124. CheckRank(0, 0);//禁止游客操作
  125. if ($cfg_money_scores == 0) {
  126. ShowMsg('系统禁用了积分与金币兑换功能', '-1');
  127. exit();
  128. }
  129. $money = empty($money) ? "" : abs(intval($money));
  130. if (empty($money)) {
  131. ShowMsg('您没指定要兑换多少金币', '-1');
  132. exit();
  133. }
  134. $needscores = $money * $cfg_money_scores;
  135. if ($cfg_ml->fields['scores'] < $needscores) {
  136. ShowMsg('您积分不足,不能换取这么多的金币', '-1');
  137. exit();
  138. }
  139. $litmitscores = $cfg_ml->fields['scores'] - $needscores;
  140. //保存记录
  141. $mtime = time();
  142. $inquery = "INSERT INTO `#@__member_operation` (`buyid`,`pname`,`product`,`money`,`mtime`,`pid`,`mid`,`sta` ,`oldinfo`) VALUES ('ScoresToMoney','积分换金币操作','stc' ,'0' ,'$mtime' ,'0' ,'{$cfg_ml->M_ID}','0' ,'用{$needscores}积分兑了换金币{$money}个'); ";
  143. $dsql->ExecuteNoneQuery($inquery);
  144. //修改积分与金币值
  145. $dsql->ExecuteNoneQuery("UPDATE `#@__member` SET `scores`=$litmitscores, money= money + $money WHERE mid='".$cfg_ml->M_ID."' ");
  146. //清除会员缓存
  147. $cfg_ml->DelCache($cfg_ml->M_ID);
  148. ShowMsg('成功兑换指定量的金币', 'operation.php');
  149. exit();
  150. }
  151. } else if ($fmdo == 'login') {
  152. //会员登录
  153. if ($dopost == "login") {
  154. if (!isset($vdcode)) {
  155. $vdcode = '';
  156. }
  157. if (CheckUserID($userid, '', false) != 'ok') {
  158. ResetVdValue();
  159. ShowMsg("您输入的会员名<span class='text-primary'>{$userid}</span>已禁止", "index.php");
  160. exit();
  161. }
  162. if ($pwd == '') {
  163. ResetVdValue();
  164. ShowMsg("密码不能为空", "-1", 0, 2000);
  165. exit();
  166. }
  167. $isNeed = $cfg_ml->isNeedCheckCode($userid);
  168. if ($isNeed) {
  169. $svali = GetCkVdValue();
  170. if (strtolower($vdcode) != $svali || $svali == '') {
  171. ResetVdValue();
  172. ShowMsg('验证码不正确', 'index.php');
  173. exit();
  174. }
  175. }
  176. //检查帐号
  177. $rs = $cfg_ml->CheckUser($userid, $pwd);
  178. if ($rs == 0) {
  179. ResetVdValue();
  180. ShowMsg("您的账号错误", "index.php", 0, 2000);
  181. exit();
  182. } else if ($rs == -1) {
  183. ResetVdValue();
  184. ShowMsg("您的密码错误", "index.php", 0, 2000);
  185. exit();
  186. } else if ($rs == -2) {
  187. ResetVdValue();
  188. ShowMsg("管理员帐号不允许从前台登录", "index.php", 0, 2000);
  189. exit();
  190. } else {
  191. //清除会员缓存
  192. $cfg_ml->DelCache($cfg_ml->M_ID);
  193. if (empty($gourl) || preg_match("#action|_do#i", $gourl)) {
  194. ShowMsg("正在登录会员中心,请稍等", "index.php", 0, 2000);
  195. } else {
  196. $gourl = str_replace('^', '&', $gourl);
  197. ShowMsg("正在前往指定页面,请稍等", $gourl, 0, 2000);
  198. }
  199. exit();
  200. }
  201. }
  202. //退出登录
  203. else if ($dopost == "exit") {
  204. $cfg_ml->ExitCookie();
  205. ShowMsg("已退出会员中心", "index.php", 0, 2000);
  206. exit();
  207. }
  208. } else if ($fmdo == 'purl'){
  209. require_once(DEDEINC.'/libraries/oxwindow.class.php');
  210. CheckRank(0, 0);//禁止游客操作
  211. $row = $dsql->GetOne("SELECT count(*) as dd FROM `#@__member` WHERE `pmid`='{$cfg_ml->M_ID}' ");
  212. $msg = "<p>您已经邀请了{$row['dd']}人:</p>
  213. <div class='media mb-3'>
  214. <span class='btn btn-primary btn-sm mr-2'>链</span>
  215. <div class='media-body pb-3 border-bottom border-gray'>
  216. <div class='d-flex justify-content-between align-items-center w-100'>
  217. <h5>链接邀请</h5>
  218. <a href='javascript:Copylink()' class='btn btn-outline-primary btn-sm'>复制链接</a>
  219. </div>
  220. <span class='d-block'>复制链接分享给其他人,对方通过链接注册后双方均可获得{$cfg_userad_adds}积分<span id='text' style='font-size:0'>{$cfg_basehost}/user/index_do.php?fmdo=user&dopost=regnew&pid={$cfg_ml->M_LoginID}</span>
  221. </div>
  222. </div>
  223. <div class='media mb-3'>
  224. <span class='btn btn-success btn-sm mr-2'>码</span>
  225. <div class='media-body pb-3 border-bottom border-gray'>
  226. <div class='d-flex justify-content-between align-items-center w-100'>
  227. <h5>二维码邀请</h5>
  228. <a href='javascript:ShowQrcode()' class='btn btn-outline-success btn-sm'>查看二维码</a>
  229. </div>
  230. <span class='d-block'>分享二维码到移动设备,通过二维码扫码注册,双方均可获得{$cfg_userad_adds}积分</span>
  231. </div>
  232. </div>
  233. <div class='text-center'><a href='index.php' class='btn btn-success btn-sm'>返回</a></div>
  234. <div id='qrcode'></div>
  235. <style>.modal-body img{margin:0 auto}#qrcode{display:none;margin:15px auto;width:200px;height:200px}</style>
  236. <script>
  237. var qrcode = new QRCode(document.getElementById(\"qrcode\"), {
  238. width : 200,
  239. height : 200,
  240. correctLevel : 3
  241. });
  242. qrcode.makeCode('{$cfg_basehost}/user/index_do.php?fmdo=user&dopost=regnew&pid={$cfg_ml->M_LoginID}');
  243. </script>
  244. <script>
  245. function Copylink() {
  246. var val = document.getElementById('text');
  247. window.getSelection().selectAllChildren(val);
  248. document.execCommand(\"Copy\");
  249. ShowMsg(\"复制推广链接成功\");
  250. }
  251. function ShowQrcode(){
  252. ShowMsg(document.getElementById('qrcode').innerHTML);
  253. }
  254. </script>";
  255. $wintitle = "邀请好友赚积分";
  256. $wecome_info = " ";
  257. $win = new OxWindow();
  258. $win->AddMsgItem($msg);
  259. $winform = $win->GetWindow("hand", false);
  260. $win->Display(DEDEMEMBER."/templets/win_templet.htm");
  261. exit;
  262. } else {
  263. ShowMsg("操作失败", "index.php");
  264. }
  265. ?>