$value) { if (!isset($arr[$value]) || empty($arr[$value])) { return backarr(0, "参数缺少"); } } $m_u = new UserModel(); $phone = $arr['phone']; $passwd = $phone . $arr['passwd']; $where = ['phone' => $phone]; $uinfo = $m_u->getInfo($where); if (empty($uinfo)) { //注册 $arr['passwd'] = $this->createpasswd($passwd); $uid = $m_u->insertData($arr); if (empty($uid)) { return backarr(0, "注册失败"); } } else { //登录 $uid = $uinfo['id']; $checked = $this->checkpasswd($passwd, $uinfo['passwd']); if (!$checked) { return backarr(0, "密码错误"); } } $result = $this->changetoken($uid, $phone); if (empty($result['status'])) { return backarr(0, $result['msg']); } $field = ['id', 'phone', 'token']; $where = ['id' => $uid]; $uinfo = $m_u->getInfo($where, $field); return backarr($uinfo, "注册成功", $uinfo); } public function login($arr) { $fillfields = ['phone', 'passwd']; foreach ($fillfields as $key => $value) { if (!isset($arr[$value]) || empty($arr[$value])) { return backarr(0, "参数缺少"); } } $m_u = new UserModel(); $phone = $arr['phone']; $passwd = $phone . $arr['passwd']; $where = ['phone' => $phone]; $uinfo = $m_u->getInfo($where); if (empty($uinfo)) { return backarr(0, "无用户信息"); } $uid = $uinfo['id']; $checked = $this->checkpasswd($passwd, $uinfo['passwd']); if (!$checked) { return backarr(0, "密码错误"); } $result = $this->changetoken($uid, $phone); if (empty($result['status'])) { return backarr(0, $result['msg']); } $field = ['id', 'phone', 'token']; $where = ['id' => $uid]; $uinfo = $m_u->getInfo($where, $field); return backarr($uinfo, "登录成功", $uinfo); } private function checkpasswd($pwd, $hash) { return password_verify($pwd, $hash); } private function createpasswd($pwd) { $newpasswd = password_hash($pwd, PASSWORD_DEFAULT); return $newpasswd; } private function changetoken($uid, $str) { $token = $this->gettoken($str); $m_u = new UserModel(); $updateData = ['token' => $token]; $where = ['id' => $uid]; $row = $m_u->updateinfo($where, $updateData); if (empty($row)) { return backarr(0, "修改token失败"); } return backarr(1, "修改token成功"); } private function gettoken($str) { $str = md5(uniqid(md5(microtime(true)), true)); $token = sha1($str . $str); return $token; } }