Login.php 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. <?php
  2. namespace app\home\controller;
  3. use app\common\model\UserModel;
  4. use app\common\service\SmsService;
  5. use app\home\HomeBaseController;
  6. use think\facade\Validate;
  7. class Login extends HomeBaseController
  8. {
  9. public function index()
  10. {
  11. return view();
  12. }
  13. public function logout()
  14. {
  15. session('home.user.id',null);
  16. return redirect('/');
  17. }
  18. public function sendSms()
  19. {
  20. $mobile = trim(input('post.mobile'));
  21. $validate = Validate::rule('mobile', 'require|mobile');
  22. if (!$validate->check(['mobile'=>$mobile])) {
  23. ajax_return(1, '手机号错误');
  24. }
  25. //手机号验证
  26. $user = UserModel::where('mobile', $mobile)->find();
  27. empty($user) && ajax_return(1, '该手机号未注册');
  28. $rand = rand(100000, 999999);
  29. $preg_phone = '/^1[34578]\d{9}$/ims';
  30. if (preg_match($preg_phone, $mobile)) {
  31. $sms = new SmsService();
  32. $res = $sms->send($mobile, 'verification', [$rand]);
  33. if ($res['code'] == 0) {
  34. session('home.login.verify', $rand);
  35. session('home.login.verify_expire', time());
  36. } else {
  37. ajax_return(1, '发送失败,请联系管理员');
  38. }
  39. } else {
  40. ajax_return(1, '手机号格式不正确');
  41. }
  42. ajax_return();
  43. }
  44. public function doLogin()
  45. {
  46. $data = input('post.');
  47. empty($data['mobile']) && ajax_return(1, '请输入手机号');
  48. //手机号验证
  49. $user = UserModel::where('mobile', $data['mobile'])->find();
  50. empty($user) && ajax_return(1, '该手机号未注册');
  51. if ($data['type'] == 'password') {
  52. //密码登录
  53. empty($data['password']) && ajax_return(1, '请输入密码');
  54. //密码验证
  55. if (md5(md5($user['salt']) . $data['password']) != $user['password'] ) {
  56. ajax_return(1, '密码错误');
  57. }
  58. } elseif ($data['type'] == 'verify') {
  59. //验证码登录
  60. empty($data['verify']) && ajax_return(1, '请输入验证码');
  61. //验证码校验
  62. if (config('home.sms_verify_expire') > 0) {
  63. $verify_expire = session('home.login.verify_expire');
  64. if ($verify_expire + config('home.sms_verify_expire') < time()) {
  65. session('home.login.verify', null);
  66. session('home.login.verify_expire', null);
  67. ajax_return(1, '验证码已过期');
  68. }
  69. }
  70. $verify = session('home.login.verify');
  71. if ($verify != $data['verify']) {
  72. ajax_return(1, '验证码不正确');
  73. }
  74. }
  75. //登录
  76. $user->last_login_time = time();
  77. $user->last_login_ip = request()->ip();
  78. $user->save();
  79. session('home.user.id', $user['id']);
  80. $url = session('back_url') ?? url('/home/my/index')->build();
  81. session('back_url', null);
  82. ajax_success(['url' => $url]);
  83. }
  84. }