Login.php 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  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\Controller;
  9. class Login extends Controller
  10. {
  11. // 登录首页
  12. public function index()
  13. {
  14. $token = input("param.token/s");
  15. $res = model('Accounts')->checktoken($token);
  16. if($res == -1){
  17. return $res;
  18. }
  19. $this->assign([
  20. 'version' => config('version')
  21. ]);
  22. return $this->fetch();
  23. }
  24. // 处理登录
  25. public function doLogin()
  26. {
  27. if(request()->isPost()){
  28. $userName = input("param.user_name/s");
  29. $password = input("param.password/s");
  30. if(empty($userName)){
  31. return json(['code' => -1, 'data' => '', 'msg' => '用户名或邮箱不能为空']);
  32. }
  33. if(empty($password)){
  34. return json(['code' => -2, 'data' => '', 'msg' => '密码不能为空']);
  35. }
  36. $user_name = db('accounts')->where('user_name', $userName)->find();
  37. $user_email = db('accounts')->where('user_name', $userName)->find();
  38. if(empty($user_name) && empty($user_email)){
  39. return json(['code' => -3, 'data' => '', 'msg' => '用户名或邮箱不存在']);
  40. }
  41. if(!empty($user_name)){$userInfo = $user_name;}
  42. if(!empty($user_email)){$userInfo = $user_email;}
  43. if(md5($password . config('salt')) != $userInfo['password']){
  44. return json(['code' => -4, 'data' => '', 'msg' => '密码错误']);
  45. }
  46. if(1 != $userInfo['status']){
  47. return json(['code' => -5, 'data' => '', 'msg' => '您已被禁用']);
  48. }
  49. // 登陆成功 生成token
  50. $module = mt_rand(100000,999999);
  51. $token = base64_encode($module.'#$@%!^*/'.time().'/'.$userInfo['id']);
  52. // 更新用户状态
  53. $param = [
  54. 'token' => $token,
  55. 'expire_time' => time(),
  56. 'last_login_time' => time()
  57. ];
  58. db('accounts')->where('id', $userInfo['id'])->update($param);
  59. $this->assign([
  60. 'token' => $token
  61. ]);
  62. return json(['code' => 1, 'data' => url('user/index'), 'msg' => '登陆成功']);
  63. }
  64. }
  65. public function loginOut()
  66. {
  67. $this->redirect(url('login/index'));
  68. }
  69. }