wangxiaodong 3 years ago
parent
commit
eb895b5703
1 changed files with 103 additions and 1 deletions
  1. 103 1
      application/api/controller/Login.php

+ 103 - 1
application/api/controller/Login.php

@@ -12,7 +12,7 @@ class Login extends Controller{
     /**
      * 用户注册
      * */
-    public function login(){
+    public function login1(){
         $data = $this->request->post();
         if (empty($data['phone'])){
             $this->error('手机号不能为空','','400');
@@ -168,6 +168,108 @@ class Login extends Controller{
     }
 
 
+    /**
+     * 用户注册登录
+     * */
+    public function login(){
+        $name = input('name/s','');
+        $id_card = input('id_card','');
+        if (empty($name) || empty($id_card)){
+            $this->error('姓名和身份证不能为空','','400');
+        }
+        if (!$this->is_idcard($id_card)){
+            $this->error('请输入正确的身份证','','400');
+        }
+        $in_data['id_card'] = $id_card;
+        $user_info = Db::table('dx_user')->where($in_data)->where('is_deleted',0)->find();
+        if ($user_info){
+            if ($user_info['status'] !=1){
+                $this->error('审核未通过','','400');
+            }else{
+                $token_arr = [
+                    'time' => Config('jwt_time')+time(),
+                    'uid'=>$user_info['id'],
+                ];
+                $token = JWT::encode($token_arr, Config('jwt_key'), 'HS256');
+                $this->success('登录成功',$token,'200');
+            }
+        }else{
+            $in_data['id_card'] = $id_card;
+            $in_data['add_time'] = date('Y-m-d H:i:s',time());
+            $uid = Db::table('dx_user')->insertGetId($in_data);
+            $this->error('请耐心等待审核','','400');
+            /*$token_arr = [
+                'time' => Config('jwt_time')+time(),
+                'uid'=>$uid,
+            ];
+            $token = JWT::encode($token_arr, Config('jwt_key'), 'HS256');
+            $this->success('登录成功',$token,'200');*/
+        }
+
+    }
+
+
+    //验证身份证
+    function is_idcard( $id )
+    {
+        $id = strtoupper($id);
+        $regx = "/(^\d{15}$)|(^\d{17}([0-9]|X)$)/";
+        $arr_split = array();
+        if(!preg_match($regx, $id))
+        {
+            return FALSE;
+        }
+        if(15==strlen($id)) //检查15位
+        {
+            $regx = "/^(\d{6})+(\d{2})+(\d{2})+(\d{2})+(\d{3})$/";
+
+            @preg_match($regx, $id, $arr_split);
+            //检查生日日期是否正确
+            $dtm_birth = "19".$arr_split[2] . '/' . $arr_split[3]. '/' .$arr_split[4];
+            if(!strtotime($dtm_birth))
+            {
+                return FALSE;
+            } else {
+                return TRUE;
+            }
+        }
+        else      //检查18位
+        {
+            $regx = "/^(\d{6})+(\d{4})+(\d{2})+(\d{2})+(\d{3})([0-9]|X)$/";
+            @preg_match($regx, $id, $arr_split);
+            $dtm_birth = $arr_split[2] . '/' . $arr_split[3]. '/' .$arr_split[4];
+            if(!strtotime($dtm_birth)) //检查生日日期是否正确
+            {
+                return FALSE;
+            }
+            else
+            {
+                //检验18位身份证的校验码是否正确。
+                //校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。
+                $arr_int = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
+                $arr_ch = array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
+                $sign = 0;
+                for ( $i = 0; $i < 17; $i++ )
+                {
+                    $b = (int) $id{$i};
+                    $w = $arr_int[$i];
+                    $sign += $b * $w;
+                }
+                $n = $sign % 11;
+                $val_num = $arr_ch[$n];
+                if ($val_num != substr($id,17, 1))
+                {
+                    return FALSE;
+                }
+                else
+                {
+                    return TRUE;
+                }
+            }
+        }
+
+    }
+
 
 
 }