Login.php 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. <?php
  2. // +—————————————————————————————————————————————————————————————————————
  3. // | Created by Yunbao
  4. // +—————————————————————————————————————————————————————————————————————
  5. // | Copyright (c) 2013~2022 http://www.yunbaokj.com All rights reserved.
  6. // +—————————————————————————————————————————————————————————————————————
  7. // | Author: https://gitee.com/yunbaokeji
  8. // +—————————————————————————————————————————————————————————————————————
  9. // | Date: 2022-04-30
  10. // +—————————————————————————————————————————————————————————————————————
  11. class Model_Login extends PhalApi_Model_NotORM {
  12. protected $fields='id,user_nicename,avatar,avatar_thumb,sex,signature,coin,user_status,login_type,province,city,area,birthday,last_login_time,age,mobile';
  13. /* 会员登录 */
  14. public function userLogin($user_login,$source,$mobileid) {
  15. $info1=DI()->notorm->user
  16. ->select($this->fields)
  17. ->where('user_login=? and user_type="1"',$user_login)
  18. ->fetchOne();
  19. if($info1){
  20. return 1004;
  21. }
  22. $info=DI()->notorm->user
  23. ->select($this->fields)
  24. ->where('user_login=? and user_type="2"',$user_login)
  25. ->fetchOne();
  26. $now=time();
  27. $nowYear=date("Y",$now);
  28. if(!$info){
  29. $from_ip= ip2long($_SERVER["REMOTE_ADDR"]);
  30. //判断是否超过后台的配置数
  31. $checklimit=checkRegIpLimit($mobileid,$from_ip);
  32. if($checklimit){
  33. return 1001;
  34. }
  35. $birthdayYear=2000;
  36. //新注册该用户
  37. $user_pass='qwe123';
  38. $user_pass=setPass($user_pass);
  39. $user_login=$user_login;
  40. $nickname='手机用户'.substr($user_login,-4);
  41. $avatar='/default.png';
  42. $avatar_thumb='/default_thumb.png';
  43. $data=array(
  44. 'user_login' => $user_login,
  45. 'user_nicename' =>$nickname,
  46. 'user_pass' =>$user_pass,
  47. 'signature' =>'这家伙很懒,什么都没留下',
  48. 'avatar' =>$avatar,
  49. 'avatar_thumb' =>$avatar_thumb,
  50. 'bg_img' =>$avatar,
  51. 'last_login_ip' =>$_SERVER['REMOTE_ADDR'],
  52. 'create_time' => time(),
  53. 'user_status' => 1,
  54. "user_type"=>2,//会员
  55. "age"=>$nowYear-$birthdayYear,
  56. "birthday"=>'2000-01-01',
  57. "mobile"=>$user_login,
  58. "login_type"=>'phone',
  59. "ip"=>$from_ip,
  60. "mobileid"=>$mobileid,
  61. );
  62. if($source){
  63. $data['source']=$source;
  64. }
  65. $rs=DI()->notorm->user->insert($data);
  66. $info['id']=$rs['id'];
  67. $info['user_nicename']=$data['user_nicename'];
  68. $info['avatar']=get_upload_path($data['avatar']);
  69. $info['avatar_thumb']=get_upload_path($data['avatar_thumb']);
  70. $info['sex']='2';
  71. $info['signature']=$data['signature'];
  72. $info['coin']=$reg_reward;
  73. $info['login_type']=$data['login_type'];
  74. $info['province']='';
  75. $info['city']='';
  76. $info['birthday']='';
  77. $info['last_login_time']='';
  78. $info['age']="0";
  79. $info['mobile']=$user_login;
  80. $info['isreg']='1'; //此参数结合后台配置参数agent_must(邀请码是否必填),如果邀请码非必填时,只有在此参数=1时app端才会弹窗显示邀请码
  81. $info['hometown']='';
  82. }else{
  83. //重新计算用户的年龄
  84. $month=date("m",strtotime($info['birthday']));
  85. $nowMonth=date("m",$now);
  86. if($nowMonth>=$month){
  87. $cha=0;
  88. }else{
  89. $cha=1;
  90. }
  91. $birthdayYear=date("Y",strtotime($info['birthday']));
  92. $age=$nowYear-$birthdayYear-$cha;
  93. DI()->notorm->user->where("id=?",$info['id'])->update(array("age"=>$age));
  94. if($info['user_status']=='0'){
  95. return 1002;
  96. }
  97. if($info['user_status']=='3'){
  98. return 1003;
  99. }
  100. unset($info['user_status']);
  101. $info['avatar']=get_upload_path($info['avatar']);
  102. $info['avatar_thumb']=get_upload_path($info['avatar_thumb']);
  103. $info['isreg']='0'; //此参数结合后台配置参数agent_must(邀请码是否必填),如果邀请码非必填时,只有在此参数=1时app端才会弹窗显示邀请码
  104. $info['hometown']=$info['province'].$info['city'].$info['area'];
  105. }
  106. $token=md5(md5($info['id'].$user_login.time()));
  107. $info['token']=$token;
  108. $this->updateToken($info['id'],$token);
  109. $cache=array("token_".$info['id'],"userinfo_".$info['id']);
  110. delcache($cache);
  111. return $info;
  112. }
  113. /* 更新token 登陆信息 */
  114. public function updateToken($uid,$token) {
  115. $expiretime=time()+60*60*24*300;
  116. $nowtime=time();
  117. DI()->notorm->user
  118. ->where('id=?',$uid)
  119. ->update(array('last_login_time' => time(), "last_login_ip"=>$_SERVER['REMOTE_ADDR'] ));
  120. $isok=DI()->notorm->user_token
  121. ->where('user_id=?',$uid)
  122. ->update(array("token"=>$token, "expire_time"=>$expiretime ,'create_time' => $nowtime ));
  123. if(!$isok){
  124. DI()->notorm->user_token
  125. ->insert(array("user_id"=>$uid,"token"=>$token, "expire_time"=>$expiretime ,'create_time' => $nowtime ));
  126. }
  127. $token_info=array(
  128. 'uid'=>$uid,
  129. 'token'=>$token,
  130. 'expire_time'=>$expiretime,
  131. );
  132. setcaches("token_".$uid,$token_info);
  133. return 1;
  134. }
  135. }