view(); } public function query(){ $domain = input('post.domain', null, 'trim'); if(!$domain) return msg('error','no domain'); if(!checkdomain($domain)){ return msg('error', '域名格式不正确!'); } $captcha_result = verify_captcha4(); if($captcha_result !== true){ return msg('error', '验证失败,请重新验证'); } $cache = Db::name('querycache')->where('type', 'icp')->where('key', $domain)->find(); if($cache && time() - strtotime($cache['uptime']) <= self::CACHE_TIME){ $array = json_decode($cache['content'], true); return msg('ok','success',$array); } try{ $result = $this->queryapi($domain); if(!$result){ return msg('ok','success',null); } }catch(Exception $e){ return msg('error', $e->getMessage()); } Db::name('querycache')->duplicate([ 'type' => 'icp', 'key' => $result['Domain'], 'content' => json_encode($result), 'uptime' => date('Y-m-d H:i:s') ])->insert([ 'type' => 'icp', 'key' => $result['Domain'], 'content' => json_encode($result), 'uptime' => date('Y-m-d H:i:s') ]); return msg('ok','success',$result); } private function queryapi($domain){ if(config_get('qqapi_url')){ $url = config_get('qqapi_url').'api.php?act=icpquery'; $post = 'key='.config_get('qqapi_key').'&domain='.$domain; $data = get_curl($url, $post); $arr = json_decode($data, true); if(isset($arr['code']) && $arr['code']==0){ return $arr['data']; }elseif(isset($arr['msg'])){ throw new Exception($arr['msg']); }else{ throw new Exception('接口请求失败'); } }elseif(config_get('yapi_token')){ $url = 'https://api.makuo.cc/api/get.other.icp?url='.urlencode($domain); $header = ['Authorization: '.config_get('yapi_token')]; $data = get_curl($url, 0, 0, 0, 0, 0, 0, $header); $arr = json_decode($data, true); if(isset($arr['code']) && $arr['code']==200){ return [ 'Domain' => $arr['data']['domain'], 'DomainIcpNum' => $arr['data']['icp'], 'CompanyName' => $arr['data']['unitName'], 'CompanyType' => $arr['data']['natureName'], 'AuditTime' => $arr['data']['updateRecordTime'], ]; }elseif(isset($arr['msg'])){ throw new Exception('接口请求失败,'.$arr['msg']); }else{ throw new Exception('接口请求失败'); } }else{ throw new Exception('请先配置API接口参数'); } } }