Register.php 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. <?php
  2. /**
  3. * User: nickbai
  4. * Date: 2017/10/24 10:46
  5. * Email: 1902822973@qq.com
  6. */
  7. namespace app\index\controller;
  8. use think\Db;
  9. use app\index\controller\Common;
  10. class Register extends Common
  11. {
  12. // 注册首页
  13. public function index()
  14. {
  15. $this->assign([
  16. 'version' => config('version')
  17. ]);
  18. return $this->fetch();
  19. }
  20. // 处理注册
  21. public function doRegister()
  22. {
  23. if (request()->isPost()) {
  24. $userName = input("param.user_name/s");
  25. $userEmail = input("param.user_email/s");
  26. $password = input("param.password/s");
  27. $phone = input("param.phone/s");
  28. $emailCode = input("param.code/s");
  29. if (empty($userName)) {
  30. return json(['code' => -1, 'data' => '', 'msg' => '用户名不能为空']);
  31. }
  32. if (empty($userEmail)) {
  33. return json(['code' => -2, 'data' => '', 'msg' => '邮箱不能为空']);
  34. }
  35. if (empty($password)) {
  36. return json(['code' => -3, 'data' => '', 'msg' => '密码不能为空']);
  37. }
  38. if (empty($phone)) {
  39. return json(['code' => -4, 'data' => '', 'msg' => '密码不能为空']);
  40. }
  41. if (empty($emailCode)) {
  42. return json(['code' => -5, 'data' => '', 'msg' => '验证码不能为空']);
  43. }
  44. if ($emailCode != session('code')) {
  45. return json(['code' => -6, 'data' => '', 'msg' => '验证码不正确']);
  46. }
  47. $name = db('accounts')->where('account_name', $userName)->find();
  48. if (!empty($name)) {
  49. return json(['code' => -7, 'data' => '', 'msg' => '用户名已存在']);
  50. }
  51. $email = db('accounts')->where('account_email', $userEmail)->find();
  52. if (!empty($email)) {
  53. return json(['code' => -8, 'data' => '', 'msg' => '邮箱已存在']);
  54. }
  55. // 添加用户信息
  56. $userInfo = [
  57. 'account_name' => $userName,
  58. 'account_email' => $userEmail,
  59. 'password' => md5($password . config('salt')),
  60. 'account_phone' => $phone,
  61. 'status' => 1,
  62. 'add_time' => time(),
  63. 'last_login_time' => time()
  64. ];
  65. $user_id = db('accounts')->insertGetId($userInfo);
  66. // 注册成功 生成token
  67. $module = mt_rand(100000, 999999);
  68. $token = base64_encode($module . '#$@%!^*/' . time() . '/' . $userInfo['id']);
  69. // 更新用户状态
  70. $param = [
  71. 'token' => $token,
  72. 'expire_time' => time(),
  73. ];
  74. db('accounts')->where('id', $user_id)->update($param);
  75. return json(['code' => 1, 'data' => url('user/index'), 'msg' => '注册成功']);
  76. }
  77. }
  78. //自动注册
  79. public function autoReg()
  80. {
  81. if ($_SERVER['REQUEST_METHOD'] != 'POST') {
  82. return json(['code' => 0, 'data' => [], 'msg' => '注册用户失败']);
  83. }
  84. //验证用户IP
  85. $settings = db('settings')->where('id', 1)->find();
  86. if ($settings['account_black_list'] == 'on') {
  87. @$ip = ($_SERVER["HTTP_VIA"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"];
  88. $ip = ($ip) ? $ip : $_SERVER["REMOTE_ADDR"];
  89. //将ip地址转换成int型
  90. $intip = bindec(decbin(ip2long($ip)));
  91. $res = db('iplimit')->where('ip', $ip)->where('object', 1)->find();
  92. $result = db('iplimit')->where('start_ip', '<=', $intip)->where('end_ip', '>=', $intip)->where('object', 1)->find();
  93. if (!empty($res) || !empty($result)) {
  94. return json(['code' => 0, 'data' => [], 'msg' => '访问受限']);
  95. }
  96. }
  97. /*
  98. if (!$this->verifyApiToken()) {
  99. return json(['code' => -6, 'data' => [], 'msg' => 'require false']);
  100. }
  101. */
  102. $appid = trim(input("post.appid/s", ''));
  103. $appuid = trim(input("post.appuid/s", ''));
  104. $token = trim(input("post.token/s", ''));
  105. $nowuid = (empty($appuid)) ? uniqid('anon_') : $appuid;
  106. $nowuid = (empty($appid) ? '' : $appid. '_') . $nowuid;
  107. if (!empty($nowuid) && !empty($token)) {
  108. $old = Db::name('accounts')->where(['account_name' => $nowuid, 'tokenvip' => $token])->find();
  109. if ($old) {
  110. Db::name('accounts')->where(['account_name' => $nowuid])->update(['last_login_time' => time()]);
  111. return json(['code' => 1, 'data' => ['id' => $old['id'], 'name' => $nowuid, 'token' => $old['tokenvip']], 'msg' => '注册成功', 'tutype' => 1]);
  112. }
  113. }
  114. if (!empty($nowuid)) {
  115. $old = Db::name('accounts')->where(['account_name' => $nowuid])->find();
  116. if ($old) {
  117. Db::name('accounts')->where(['account_name' => $nowuid])->update(['last_login_time' => time()]);
  118. return json(['code' => 1, 'data' => ['id' => $old['id'], 'name' => $nowuid, 'token' => $old['tokenvip']], 'msg' => '注册成功', 'tutype' => 1]);
  119. }
  120. }
  121. if ($token) {
  122. $old = db('accounts')->where(['token' => $token])->find();
  123. if ($old) {
  124. if ($old['status'] != 1) {
  125. return json(['code' => 0, 'data' => [], 'msg' => '禁止登陆']);
  126. }
  127. Db::name('accounts')->where(['token' => $token])->update(['last_login_time' => time()]);
  128. return json(['code' => 1, 'data' => ['id' => $old['id'], 'name' => $old['account_name'], 'token' => $old['token']], 'msg' => '注册成功', 'tutype' => 0]);
  129. }
  130. }
  131. NEWUSERLABLE:
  132. $now = time();
  133. $token = md5(uniqid() . rand(10000, 50000));
  134. $tokenvip = md5(md5(uniqid() . rand(60000, 90000)));
  135. $newdata = [
  136. 'account_name' => $nowuid,
  137. 'password' => md5(microtime() . rand(1, 5000)),
  138. 'status' => 1,
  139. 'add_time' => $now,
  140. 'last_login_time' => $now,
  141. 'token' => $token,
  142. 'tokenvip' => $tokenvip,
  143. 'expire_time' => $now,
  144. ];
  145. try {
  146. $retid = Db::name('accounts')->insertGetId($newdata);
  147. } catch (\Exception $e) {
  148. $retid = false;
  149. }
  150. if ($retid) {
  151. if (empty($appuid)) {
  152. return json(['code' => 1, 'data' => ['id' => $retid, 'name' => $nowuid, 'token' => $token], 'msg' => '注册成功', 'tutype' => -1]);
  153. } else {
  154. return json(['code' => 1, 'data' => ['id' => $retid, 'name' => $nowuid, 'token' => $tokenvip], 'msg' => '注册成功', 'tutype' => 2]);
  155. }
  156. } else {
  157. return json(['code' => 0, 'data' => [], 'msg' => '注册用户失败']);
  158. }
  159. }
  160. }