diff --git a/application/config/config.php b/application/config/config.php index 013dc95b..df5cd0d1 100644 --- a/application/config/config.php +++ b/application/config/config.php @@ -364,7 +364,7 @@ $config['proxy_ips'] = ''; //各站信息组和人员权限分配 $config['site'] = array( 'cht' => array('site_code' => 'cht', 'site_id' => 14, 'site_lgc' => '1', 'site_url' => 'https://www.chinahighlights.com', 'site_image_url' => '//images.chinahighlights.com', 'site_authors' => array('zzy', 'spt', 'yl', 'gavin', 'sw', 'zl', 'wbl', 'yqw', 'lf', 'zhm', 'pkl'), 'site_user' => ',ycc,lmr, zyh,J,shw,B,zzy,WJJ,Tony,pcf,zxy,wst,wz,v,S,yyg,yxd,wj,sw,yl,hx,spt,wmr,zl,syt,gavin,zm,htc,yqw,bhn,lmj,wbl,yqw,LYY,zhm,'), - 'gm' => array('site_code' => 'gm', 'site_id' => 22, 'site_lgc' => '4', 'site_url' => 'http://www.chinarundreisen.com', 'site_image_url' => '//bilder.chinarundreisen.com', 'site_authors' => array('DX', 'X', 'K', 'Lan', 'lmr', 'zyh', 'ZYHL', 'TDJ'), 'site_user' => ',ycc,lmr,B,zyh,DX,X,K,htc,zm,bhn,Lan,Tony,zyh,J,v,ZYHL,TDJ,LYY,shw,'), + 'gm' => array('site_code' => 'gm', 'site_id' => 22, 'site_lgc' => '4', 'site_url' => 'https://www.chinarundreisen.com', 'site_image_url' => '//bilder.chinarundreisen.com', 'site_authors' => array('DX', 'X', 'K', 'Lan', 'lmr', 'zyh', 'ZYHL', 'TDJ'), 'site_user' => ',ycc,lmr,B,zyh,DX,X,K,htc,zm,bhn,Lan,Tony,zyh,J,v,ZYHL,TDJ,LYY,shw,'), 'vc' => array('site_code' => 'vc', 'site_id' => 30, 'site_lgc' => '5', 'site_url' => 'https://www.voyageschine.com', 'site_image_url' => '//images.voyageschine.com', 'site_authors' => array('JE', 'kq', 'lya', 'lyz', 'zyh'), 'site_user' => ',ycc,lmr, zyh,JE,htc,kq,lya,bhn,Tony,zyh,B,J,lyz,LYY,'), 'jp' => array('site_code' => 'jp', 'site_id' => 88, 'site_lgc' => '3', 'site_url' => 'https://www.arachina.com', 'site_image_url' => '//images.arachina.com', 'site_authors' => array('hql', 'LLM', 'SHX', 'lmr', 'zyh', 'zb'), 'site_user' => ',ycc,lmr, zyh,hql,LLM,SHX,htc,zpl,Tony,zyh,J,B,zb,LYY,'), 'vac' => array('site_code' => 'vac', 'site_id' => 95, 'site_lgc' => '6', 'site_url' => 'https://www.viaje-a-china.com', 'site_image_url' => '//imagenes.viaje-a-china.com', 'site_authors' => array('I', 'cyt', 'lmr', 'zyh', 'LLM'), 'site_user' => ',ycc,lmr, zyh,I,cyt,htc,bhn,Tony,zyh,B,J,LLM,LYY,'), @@ -372,11 +372,11 @@ $config['site'] = array( 'ru' => array('site_code' => 'ru', 'site_id' => 102, 'site_lgc' => '7', 'site_url' => 'https://www.chinahighlights.ru', 'site_image_url' => '//images.chinahighlights.ru', 'site_authors' => array('xjj', 'zyy'), 'site_user' => ',ycc,lmr, zyh,xjj,htc,DX,zyy,bhn,Tony,zyh,B,J,LYY,'), 'wt' => array('site_code' => 'wt', 'site_id' => 172, 'site_lgc' => '2', 'site_url' => 'http://www.iiiyooo.com', 'site_image_url' => '', 'site_authors' => array('ylh', 'lfj', 'wx', 'lzh', 'shw', 'lx'), 'site_user' => ',ycc,lmr, zyh,ylh,lfj,wx,lzh,shw,lx,bhn,B,J,'), 'tbt' => array('site_code' => 'tbt', 'site_id' => 169, 'site_lgc' => '1', 'site_url' => 'http://www.tibettravel.info', 'site_image_url' => '/images', 'site_authors' => array('wj', 'sfx'), 'site_user' => ',ycc,wj,bhn,wx,lzh,lfj,hwt,thf,sfx,J,ZP,'), - 'sht' => array('site_code' => 'sht', 'site_id' => 96, 'site_lgc' => '1', 'site_url' => 'http://www.shanghaihighlights.com', 'site_image_url' => '//images.shanghaihighlights.com', 'site_authors' => array('vz', 'sfx'), 'site_user' => ',ycc,wj,bhn,wx,lzh,lfj,hwt,thf,vz,sfx,J,ZP,LYY,'), - 'yz' => array('site_code' => 'yz', 'site_id' => 89, 'site_lgc' => '1', 'site_url' => 'http://www.yangtzeriver.org', 'site_image_url' => '//images.yangtzeriver.org', 'site_authors' => array('wj', 'vi', 'sfx'), 'site_user' => ',ycc,wj,bhn,hwt,thf,vi,sfx,J,ZP,lyy,'), - 'gl' => array('site_code' => 'gl', 'site_id' => 90, 'site_lgc' => '1', 'site_url' => 'http://www.guilinchina.net', 'site_image_url' => '//images.guilinchina.net', 'site_authors' => array('vi', 'sfx'), 'site_user' => ',ycc,vi,bhn,hwt,thf,sfx,J,ZP,lyy,'), + 'sht' => array('site_code' => 'sht', 'site_id' => 96, 'site_lgc' => '1', 'site_url' => 'https://www.shanghaihighlights.com', 'site_image_url' => '//images.shanghaihighlights.com', 'site_authors' => array('vz', 'sfx'), 'site_user' => ',ycc,wj,bhn,wx,lzh,lfj,hwt,thf,vz,sfx,J,ZP,LYY,'), + 'yz' => array('site_code' => 'yz', 'site_id' => 89, 'site_lgc' => '1', 'site_url' => 'https://www.yangtzeriver.org', 'site_image_url' => '//images.yangtzeriver.org', 'site_authors' => array('wj', 'vi', 'sfx'), 'site_user' => ',ycc,wj,bhn,hwt,thf,vi,sfx,J,ZP,lyy,'), + 'gl' => array('site_code' => 'gl', 'site_id' => 90, 'site_lgc' => '1', 'site_url' => 'https://www.guilinchina.net', 'site_image_url' => '//images.guilinchina.net', 'site_authors' => array('vi', 'sfx'), 'site_user' => ',ycc,vi,bhn,hwt,thf,sfx,J,ZP,lyy,'), 'mbj' => array('site_code' => 'mbj', 'site_id' => 98, 'site_lgc' => '1', 'site_url' => 'http://www.mybeijingchina.com', 'site_image_url' => '//images.mybeijingchina.com', 'site_authors' => array('vz', 'sfx'), 'site_user' => ',ycc,vz,bhn,hwt,thf,sfx,J,ZP,'), - 'ct' => array('site_code' => 'ct', 'site_id' => 1000, 'site_lgc' => '104', 'site_url' => 'http://www.chinatravel.com', 'site_image_url' => '//images.chinatravel.com', 'site_authors' => array('ll', 'D'), 'site_user' => ',ycc,vz,bhn,J,wj,ll,D,ZP,lyy,'), + 'ct' => array('site_code' => 'ct', 'site_id' => 1000, 'site_lgc' => '104', 'site_url' => 'https://www.chinatravel.com', 'site_image_url' => '//images.chinatravel.com', 'site_authors' => array('ll', 'D'), 'site_user' => ',ycc,vz,bhn,J,wj,ll,D,ZP,lyy,'), 'dct' => array('site_code' => 'dct', 'site_id' => 99, 'site_lgc' => '1', 'site_url' => 'http://www.diychinatours.com', 'site_image_url' => '//images.chinahighlights.com', 'site_authors' => array('zzy', 'spt', 'yl', 'gavin'), 'site_user' => ',ycc,lmr, zyh,J,shw,B,zzy,WJJ,Tony,pcf,zxy,wst,wz,S,yyg,yxd,wj,sw,yl,hx,spt,wmr,syt,gavin,zm,htc,yqw,zl,sw,J,qqs,MGZ,'), 'cits' => array('site_code' => 'cits', 'site_id' => 10086, 'site_lgc' => '2', 'site_image_url' => '', 'site_url' => 'www.guilincits.com'), 'mct' => array('site_code' => 'mct', 'site_id' => 6, 'site_lgc' => '101', 'site_image_url' => '', 'site_url' => 'https://www.mychinatours.com', 'site_authors' => array('cj')), diff --git a/application/controllers/keyworlds.php b/application/controllers/keyworlds.php index 429adf01..1c6706db 100644 --- a/application/controllers/keyworlds.php +++ b/application/controllers/keyworlds.php @@ -70,6 +70,7 @@ class Keyworlds extends CI_Controller { $data['wordcount'] = 2; } } + $data['rank_info'] = $this->Keywordsrank_model->get_rank_list($is_id_string, 30, $startdate, $enddate); empty($data['rank_info']) && $data['rank_info'] = $this->Keywordsrank_model->get_rank_list($is_id_string, 30); if (!empty($data['rank_info'])) { @@ -94,10 +95,15 @@ class Keyworlds extends CI_Controller { } } } +// print_r($data['wordcount']); +// print_r($rank_json); + // 拼接highcharts数据格式 $data['rank_json'] = '['; foreach ($rank_json as &$ra) { ksort($ra); + // 每条线 $data['rank_json'] .='{"name":"' . $ra[$data_time[0]]->kw_keyworlds . '","data":['; + // 每个点 foreach ($ra as $v) { $kwr_rank = $v->kwr_rank; if ($v->kwr_rank == '>150') @@ -110,8 +116,25 @@ class Keyworlds extends CI_Controller { } $data['rank_json'] = substr($data['rank_json'], 0, -1); $data['rank_json'] .=']},'; + // 叶子节点 显示mobile记录 + if ($data['wordcount'] == 1) { + $data['rank_json'] .='{"name":"' . $ra[$data_time[0]]->kw_keyworlds . '(mobile)","data":['; + foreach ($ra as $v) { + $kwr_mobile_rank = $v->kwr_mobile_rank ? $v->kwr_mobile_rank : 'null' ; + if ($v->kwr_mobile_rank == '>150') + $kwr_mobile_rank = 100; + if (strtolower($this->config->item('site_code')) == 'gm') { + $data['rank_json'] .=-$kwr_mobile_rank . ','; + } else { + $data['rank_json'] .=$kwr_mobile_rank . ','; + } + } + $data['rank_json'] = substr($data['rank_json'], 0, -1); + $data['rank_json'] .=']},'; + } } $data['rank_json'] = substr($data['rank_json'], 0, -1) . ']'; +// print_r($data['rank_json']); $data['data_time'] = json_encode($data_time); $data['rank_info'] = ''; isset($rank_json[$data['current_keyworld']->kw_id]) && $data['rank_info'] = $rank_json[$data['current_keyworld']->kw_id]; @@ -120,9 +143,10 @@ class Keyworlds extends CI_Controller { redirect(site_url("Keyworlds/index")); } - $data['analytics'] = $this->analytics_model->get_keyword_analytics($data['current_keyworld']->kw_keyworlds, 30); + // $data['analytics'] = $this->analytics_model->get_keyword_analytics($data['current_keyworld']->kw_keyworlds, 30); $data['site_code'] = strtolower($this->config->item('site_code')); - +// print_r($data['rank_info']); +// print_r($data["rank_json"]); $this->load->view('bootstrap/header', $data); $this->load->view('keyworlds/index'); $this->load->view('bootstrap/footer'); @@ -228,72 +252,108 @@ class Keyworlds extends CI_Controller { public function get_google_rank() { $keyworlds = $this->input->post('keyworlds'); //搜索关键字 - $kw_id = $this->input->post('kw_id'); - $site_url = $this->config->item('site_url'); - - //$engines = array('cht'=>'get_search_content_by_aol','gm' =>'get_search_content_by_google','vc' =>'get_search_content_by_google','jp' =>'get_search_content_by_yahoo','vac'=>'get_search_content_by_google','it' =>'get_search_content_by_google','ru' =>'get_search_content_by_google','wt' =>'get_search_content_by_baidu','tbt'=>'get_search_content_by_aol','sht'=>'get_search_content_by_aol','yz' =>'get_search_content_by_aol','gl' =>'get_search_content_by_aol','mbj'=>'get_search_content_by_aol','ct' =>'get_search_content_by_aol','mct'=>'get_search_content_by_aol','dct'=>'get_search_content_by_aol','cits' =>'get_search_content_by_baidu',); - //$engines = array('cht'=>'get_search_content_by_google','gm' =>'get_search_content_by_google','vc' =>'get_search_content_by_google','jp' =>'get_search_content_by_yahoo','vac'=>'get_search_content_by_google','it' =>'get_search_content_by_google','ru' =>'get_search_content_by_google','wt' =>'get_search_content_by_baidu','tbt'=>'get_search_content_by_google','sht'=>'get_search_content_by_google','yz' =>'get_search_content_by_google','gl' =>'get_search_content_by_google','mbj'=>'get_search_content_by_google','ct' =>'get_search_content_by_google','mct'=>'get_search_content_by_google','dct'=>'get_search_content_by_google','cits' =>'get_search_content_by_baidu'); - $engines = array('cht' => 'get_search_content_by_google', 'gm' => 'get_search_content_by_google', 'vc' => 'get_search_content_by_google', 'jp' => 'get_search_content_by_google', 'vac' => 'get_search_content_by_google', 'it' => 'get_search_content_by_google', 'ru' => 'get_search_content_by_google', 'wt' => 'get_search_content_by_baidu', 'tbt' => 'get_search_content_by_google', 'sht' => 'get_search_content_by_google', 'yz' => 'get_search_content_by_google', 'gl' => 'get_search_content_by_google', 'mbj' => 'get_search_content_by_google', 'ct' => 'get_search_content_by_google', 'mct' => 'get_search_content_by_google', 'dct' => 'get_search_content_by_google', 'cits' => 'get_search_content_by_baidu', 'ah' => 'get_search_content_by_google'); + $kw_id = $this->input->post('kw_id'); + $site_url = $this->config->item('site_url'); + + $engines = array( + 'cht' => 'get_search_content_by_google', + 'gm' => 'get_search_content_by_google', + 'vc' => 'get_search_content_by_google', + 'jp' => 'get_search_content_by_google', + 'vac' => 'get_search_content_by_google', + 'it' => 'get_search_content_by_google', + 'ru' => 'get_search_content_by_google', + 'tbt' => 'get_search_content_by_google', + 'sht' => 'get_search_content_by_google', + 'yz' => 'get_search_content_by_google', + 'gl' => 'get_search_content_by_google', + 'mbj' => 'get_search_content_by_google', + 'ct' => 'get_search_content_by_google', + 'mct' => 'get_search_content_by_google', + 'dct' => 'get_search_content_by_google', + 'ah' => 'get_search_content_by_google' + ); $site_code = $this->config->item('site_code'); $method = $engines[$site_code]; - if ($site_code == 'wt') - $site_url = 'www.iiiyooo.com'; - if ($site_code == 'cits') - $site_url = 'www.guilincits.c'; - - $last_rank = $this->Keywordsrank_model->get_rank_list($kw_id, $top = 1); - if (isset($last_rank[0]->kwr_datetime) and ( time() - $last_rank[0]->kwr_datetime) < 300) { + $today = strtotime(date('Y-m-d')); + $client_flag = 'PC'; + $rank_flag = 'rank'; + $source_flag = 'source'; + $last_rank = $this->Keywordsrank_model->get_rank_list($kw_id, $top = 1); + if (isset($last_rank[0]->kwr_datetime) and ( time() - $last_rank[0]->kwr_datetime) < 180) { $data[] = array('name' => 'rank', 'value' => '查询过于频繁,请等待三分钟!'); echo json_encode($data); return TRUE; + } else if (empty($last_rank[0]->kwr_mobile_rank) && + intval($last_rank[0]->kwr_datetime) > intval($today)) { + $client_flag = 'm'; + $rank_flag = 'rank_m'; + $source_flag = 'source_m'; } //获取排名详细情况,排名超过150的停止搜索 for ($i = 1; $i <= 15; $i++) { $j = $i; - $rank = $this->$method($keyworlds, $site_url, $j, $site_code); - if ($rank['rank'] != 0) { - if ($rank['rank'] > 150) - $rank['rank'] = '151'; + $rank = $this->$method($client_flag, $keyworlds, $site_url, $j, $site_code); + // 仅更新一个字段 + if (intval($rank['rank']) == 0) { + $rank['rank'] = $last_rank[0]->kwr_rank; + $rank['source'] = $last_rank[0]->kwr_source; + } else { + $rank['rank_m'] = null; + $rank['source_m'] = null; + } + if ($rank[$rank_flag] != 0) { + if ($rank[$rank_flag] > 150) + $rank[$rank_flag] = '151'; break; }elseif ($i == 15) { - $rank['rank'] = '151'; + $rank[$rank_flag] = '151'; break; - } elseif ($rank['rank'] == -2) { + } elseif ($rank[$rank_flag] == -2) { break; } } //保存排名数据 - if ($rank['rank'] == '151') { //超过151的排名则不记录 + if ($rank[$rank_flag] == '151') { //超过151的排名则不记录 $this->Keywords_model->update_time($kw_id); } elseif (isset($last_rank[0]->kwr_datetime) and $last_rank[0]->kwr_datetime > strtotime(date('Y-m-d'))) { - if ($rank['rank'] != -1 and $rank['rank'] != -2 and $this->Keywordsrank_model->update_rank($last_rank[0]->kwr_id, $rank['rank'], $rank['source'])) { + if ($rank[$rank_flag] != -1 and $rank[$rank_flag] != -2 and $this->Keywordsrank_model->update_rank($last_rank[0]->kwr_id, $rank['rank'], $rank['rank_m'], $rank['source'], $rank['source_m'])) { $this->Keywords_model->update_time($kw_id); } } else { - if ($rank['rank'] != -1 and $rank['rank'] != -2 and $this->Keywordsrank_model->add_rank($kw_id, $rank['rank'], $rank['source'], $rank['engines'])) { + if ($rank[$rank_flag] != -1 and $rank[$rank_flag] != -2 and $this->Keywordsrank_model->add_rank($kw_id, $rank['rank'], $rank['rank_m'], $rank['source'], $rank['source_m'], $rank['engines'])) { $this->Keywords_model->update_time($kw_id); } } - $data[] = array('name' => 'rank', 'value' => $rank['rank']); + $data[] = array('name' => 'rank', 'value' => ($rank['rank'] . " -- " . $rank["rank_m"])); echo json_encode($data); return TRUE; } //自动爬取排名 public function get_auto_rank($engines = '', $fix_site_code = '') { + set_time_limit(60); $rank = array(); $site_config = $this->config->item('site'); $engines = trim($engines); //取出需要更新排名的关键词 $worldsList = $this->Keywords_model->get_keyworld_list(1, $engines, $fix_site_code); - //print_r($worldsList);die(); //如果没有需要更新的则返回 if (empty($worldsList)) { echo 'all done'; return; } + $today = strtotime(date('Y-m-d')); + $client_flag = "PC"; + $rank_flag = 'rank'; + $source_flag = 'source'; + if (intval($worldsList[0]->kwr_datetime) >= intval($today) ) { + $client_flag = "m"; + $rank_flag = 'rank_m'; + $source_flag = 'source_m'; + } $last_rank = $this->Keywordsrank_model->get_rank_list($worldsList[0]->kw_id); //获取排名并保存 @@ -304,26 +364,30 @@ class Keyworlds extends CI_Controller { for ($i = 1; $i <= 15; $i++) { if ($engines == '' || $engines == 'en' || $engines == 'eu') {//没有输入搜索引擎的时候根据站点自动分配获取排名的搜索引擎 - $rank = $this->get_search_content_by_google($v->kw_keyworlds, $site_url, $i, $site_code); + $rank = $this->get_search_content_by_google($client_flag,$v->kw_keyworlds, $site_url, $i, $site_code); } else if ($engines == 'yandex') {//俄语站的yangdex - $rank = $this->get_search_content_by_yandex($v->kw_keyworlds, $site_url, $i - 1); - } elseif ($engines == 'yahoo') { - $rank = $this->get_search_content_by_yahoo($v->kw_keyworlds, $site_url, $i, $site_code); + $rank = $this->get_search_content_by_yandex($client_flag,$v->kw_keyworlds, $site_url, $i - 1); } - - if ($rank['rank'] != 0) { - if ($rank['rank'] > 150) - $rank['rank'] = '151'; + if (intval($rank['rank']) == 0) { + $rank['rank'] = $last_rank[0]->kwr_rank; + $rank['source'] = $last_rank[0]->kwr_source; + } else { + $rank['rank_m'] = null; + $rank['source_m'] = null; + } + if ($rank[$rank_flag] != 0) { + if ($rank[$rank_flag] > 150) + $rank[$rank_flag] = '151'; break; }elseif ($i == 15) { - $rank['rank'] = '151'; - } elseif ($rank['rank'] == -2) { + $rank[$rank_flag] = '151'; + } elseif ($rank[$rank_flag] == -2) { break; } } - if ($rank['rank'] == '151') { //超过151的排名则不记录 + if ($rank[$rank_flag] == '151') { //超过151的排名则不记录 $this->Keywords_model->update_time($v->kw_id); - }else if ($rank['rank'] != -1 and $rank['rank'] != -2 and $this->Keywordsrank_model->add_rank($v->kw_id, $rank['rank'], $rank['source'], $rank['engines'])) { + }else if ($rank[$rank_flag] != -1 and $rank[$rank_flag] != -2 and $this->Keywordsrank_model->add_rank($v->kw_id, $rank['rank'], $rank['rank_m'], $rank['source'], $rank['source_m'], $rank['engines'])) { $this->load->model('InfoSMS_model'); $last_rank = isset($last_rank[0]) ? $last_rank[0]->kwr_rank : $rank['rank']; $this->InfoSMS_model->readed_for_info($v->kw_id, 'keywords_rank'); @@ -336,34 +400,31 @@ class Keyworlds extends CI_Controller { } //计算关键词在google搜索引擎的排名 - public function get_search_content_by_google($keyworlds, $site_url, $page, $site_code) { + public function get_search_content_by_google($client_flag,$keyworlds, $site_url, $page, $site_code) { + $site_url .= "/"; $rank['rank'] = 0; $rank['source'] = $site_url; + $rank['rank_m'] = 0; + $rank['source_m'] = $site_url; $rank['engines'] = 'google'; if ($page > 3) { $rank['rank'] = 151; + $rank['rank_m'] = 151; return $rank; } - //拼接关键词 - /* $key_array = explode(' ',$keyworlds); - $search_worlds=''; - foreach ($key_array as $v) { - $search_worlds.='+'.$v; - } - $search_worlds = substr($search_worlds,1); */ $search_worlds = urlencode($keyworlds); //拼接搜索url链接 $start = ($page - 1) * 50; $google_url = 'google.com'; $google_domain = array( - 'gm' => 'google.de', - 'vc' => 'google.fr', + 'gm' => 'google.de', + 'vc' => 'google.fr', 'vac' => 'google.es', - 'ru' => 'google.ru', - 'it' => 'google.it', - 'jp' => 'google.co.jp' + 'ru' => 'google.ru', + 'it' => 'google.it', + 'jp' => 'google.co.jp' ); if (!empty($google_domain[$site_code])) $google_url = $google_domain[$site_code]; @@ -374,292 +435,103 @@ class Keyworlds extends CI_Controller { $language = $language_array[$site_code]; //抓取google搜索结果 - $this->load->library('Snoopy'); - $snoopy = $this->snoopy; - $snoopy->maxredirs = 0; - $snoopy->agent = '(compatible; MSIE 11; MSN 8; AOL 4.0; Windows 98)'; //模拟浏览器 - if ($snoopy->fetch("http://www.$google_url/search?q=$search_worlds&start=$start&num=50&hl=$language")) { - $response = $snoopy->results; + $url = "https://www.$google_url/search?q=$search_worlds&start=$start&num=50&hl=$language"; + $match_fun = '/

(.*)<\/h3>/smUi'; + $rank_flag = 'rank'; + $source_flag = 'source'; + if ($client_flag == 'm') { + $match_fun = '/curl($url,$client_flag); + if ($response) { //分析google搜索结果,计算排名 if (false !== stripos($response, '

302 Moved

')) { $rank['rank'] = -2; } elseif (false !== stripos($response, $site_url)) { - preg_match_all('/

(.*)<\/h3>/smUi', $response, $store); + preg_match_all($match_fun, $response, $store); foreach ($store[1] as $k => $v) { $ismatch = stripos($v, $site_url); if (false !== $ismatch) { //计算排名 - $rank['rank'] = $start + $k + 1; + $rank[$rank_flag] = $start + $k + 1; //抓取关键词来源 - $end = stripos($v, '&', $ismatch); + $end = strpos($v, '"', $ismatch); $source = substr($v, $ismatch, $end); - $source = explode('&', $source); - $rank['source'] = $source[0]; + $source = explode('"', $source); + $rank[$source_flag] = $source[0]; break; } } + } else { + // log_message('error','google search response not found CH'); } } else { - $rank['rank'] = -1; + $rank[$rank_flag] = -1; } - return $rank; } public function test() { - $ranks = $this->get_search_content_by_yandex('Путеводитель по городу гуйлинь', 'www.chinahighlights.ru'); + // $ranks = $this->get_search_content_by_yandex('Путеводитель по городу гуйлинь', 'www.chinahighlights.ru'); + // $ranks = $this->get_search_content_by_google('PC','travel china', 'https://www.chinahighlights.com',1,"en"); var_dump($ranks); } //计算关键词在yandex搜索引擎的排名 - public function get_search_content_by_yandex($keyworlds, $site_url, $page = 0, $sitecode = false) { + public function get_search_content_by_yandex($client_flag,$keyworlds, $site_url, $page = 0, $sitecode = false) { + $site_url .= "/"; $rank['rank'] = 0; + $rank['rank_m'] = 0; $rank['source'] = $site_url; + $rank['source_m'] = $site_url; $rank['engines'] = 'yandex'; + if ($page > 3) { + $rank['rank'] = 151; + $rank['rank_m'] = 151; + return $rank; + } $startrank = $page * 10; $search_worlds = urlencode($keyworlds); //抓取搜索结果数据 - $this->load->library('Snoopy'); - $snoopy = $this->snoopy; - $snoopy->host = 'yandex.ru'; - $snoopy->referer = "http://www.yandex.ru/"; - //$snoopy->maxredirs=0; - $snoopy->agent = 'Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:20.0) Gecko/20100101 Firefox/20.0'; - //$snoopy->agent = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.66 Safari/537.36';//模拟浏览器 - if ($snoopy->fetch("http://www.yandex.ru/yandsearch?p=$page&text=$search_worlds&lr=21436")) { - $response = $snoopy->results; - //分析YANDEX搜索结果,计算排名 - if (false !== stripos($response, '

302 Found

')) { + $url = "https://www.yandex.ru/yandsearch?p=$page&text=$search_worlds&lr=21436"; + $refer = "https://www.yandex.ru/"; + $match_fun = '/
curl($url,$client_flag,$refer); + if ($response) { + // 分析YANDEX搜索结果,计算排名 + if (false !== stripos($response, '

302 Found

') || + false !== stripos($response, 'капчей') || false !== stripos($response, 'captcha')) { $rank['rank'] = -2; } elseif (false !== stripos($response, $site_url)) { - preg_match_all("/(.*)<\/a>/smUi", $response, $store); + preg_match_all($match_fun, $response, $store); foreach ($store[1] as $k => $v) { $start_s = stripos($v, $site_url); if (false !== $start_s) { - $rank['rank'] = $startrank + $k + 1; + $rank[$rank_flag] = $startrank + $k + 1; $end_s = stripos($v, '" ', $start_s); $source = substr($v, $start_s, $end_s); $sources = explode('" ', $source); - $rank['source'] = $sources[0]; + $rank[$source_flag] = $sources[0]; break; } } - } - } else { - $rank['rank'] = -1; - } - return $rank; - } - - //计算关键词在google搜索引擎的排名 - public function get_search_content_by_yahoo($keyworlds, $site_url, $page = 1, $sitecode = false) { - $rank['rank'] = 0; - $rank['source'] = $site_url; - $site_url_array = explode('//', $site_url); - $site_url = $site_url_array[1]; - $rank['engines'] = 'yahoo'; - if ($page > 3) { - $rank['rank'] = 151; - return $rank; - } - - //拼接关键词 - /* $key_array = explode(' ',$keyworlds); - $search_worlds=''; - foreach ($key_array as $v) { - $search_worlds.='+'.$v; - } - $search_worlds = substr($search_worlds,1); */ - $search_worlds = urlencode($keyworlds); - $yahoourl = 'http://search.yahoo.com'; - if ($sitecode == 'jp') - $yahoourl = 'http://search.yahoo.co.jp'; - - $start = ($page - 1) * 50 + 1; - $pstart = $page + 4; - - //抓取yahoo搜索结果 - $this->load->library('Snoopy'); - $snoopy = $this->snoopy; - $snoopy->maxredirs = 0; - $snoopy->agent = '(compatible; MSIE 9; MSN 8; AOL 4.0; Windows 98)'; //模拟浏览器 - if ($snoopy->fetch("$yahoourl/search;_ylt=A0SO8yDYHxBT6xQAWAFXNyoA?p=$search_worlds&n=100&ei=UTF-8&va_vt=any&vo_vt=any&ve_vt=any&vp_vt=any&vst=0&vf=all&vm=i&fl=0&fr=sfp&b=$start&pstart=$pstart")) { - $response = $snoopy->results; - //分析yahoo搜索结果,计算排名 - //出现被屏蔽情况 - if (false !== stripos($response, 'document has moved')) { - $rank['rank'] = -2; } else { - preg_match_all('/
(.*)<\/ol>/smUi', $response, $search_c); - if (false !== stripos($search_c[0][0], $site_url)) { - preg_match_all('/
  • /smUi', $search_c[0][0], $store); - foreach ($store[1] as $k => $v) { - $ismatch = stripos($v, $site_url); - if (false !== $ismatch) { - //计算排名 - $rank['rank'] = $start + $k + 1; - //抓取关键词来源 - $end = stripos($v, '">', $ismatch); - $source = substr($v, $ismatch, $end); - $source = explode('">', $source); - $rank['source'] = 'http://' . $source[0]; - break; - } - } - } + // log_message('error','yandex not found CH'); } } else { - $rank['rank'] = -1; - } - return($rank); - } - - //返回指定页面路径pagepath在指定时间内的成效信息 - public function get_analytics_by_date($loadtotal = 0) { - $data = array(); - //获取请求的日期范围以及请求的页面路径 - $startdate = $this->input->post('startdate'); - $enddate = $this->input->post('enddate'); - $pagepath = $this->input->post('pagepath'); - //如果开始时间为空则把开始时间设为往前七天 - if ($startdate == '') { - $startdate = time() - 7 * 24 * 60 * 60; - } else { - $startdate = strtotime($startdate); - } - //如果结束时间为空,则把结束时间设为当天 - if ($enddate == '') { - $enddate = time(); - } else { - $enddate = strtotime($enddate); - } - if ($startdate > $enddate) { - echo "请选择正确的日期"; - die(); + $rank[$rank_flag] = -1; } - //查取google分析数据 - $data['analytics_list'] = $this->analytics_model->get_analytics_list($pagepath, 50, $startdate, $enddate); - $total_visit['pv'] = $total_visit['uv'] = $total_visit['agv_time'] = $total_visit['entrances'] = 0; - $analytics_count = 0; - //访问量汇总 - foreach ($data['analytics_list'] as $v) { - $total_visit['pv']+=$v->kwa_pageviews; - $total_visit['uv']+=$v->kwa_uniquepageviews; - $total_visit['agv_time']+=$v->kwa_avgtimeonpage; - $total_visit['entrances']+=$v->kwa_entrances; - $analytics_count++; - } - $analytics_count == 0 ? $analytics_count = 1 : null; - $total_visit['agv_time'] = ceil($total_visit['agv_time'] / $analytics_count); - $data['total_visit'] = $total_visit; - //如果loadtotal==1,则只返回google分析的汇总数据;如果loadtotal==0,则返回明细数据表 - $data['loadtotal'] = $loadtotal; - - $this->load->view('keyworlds/analytics', $data); - } - - //从google分析接口获取数据并入库,$start_index:从接口提取数据时的起始条数 - public function get_google_analytics_data($sitecode = 'cht', $start_index = 1) { - session_start(); - //判断该站点是否已经更新. - $update_count = $this->analytics_model->get_update_count($sitecode); - $update_count; - $flag = false; - switch ($sitecode) { - case 'cht': - case 'jp': - case 'ct': - //对于以上三个站点如果数据库中存在的数量大于当前起始数,则表示该站点已经更新 - if ($update_count > $start_index) - $flag = true; - break; - default: - //对于其他站点如果数据库中存在的数量大于0,则表示该站点已经更新 - if ($update_count > 0) { - $flag = true; - } - } - //如果站点已经更新,则放弃从google分析抓取数据 - if ($flag) { - echo 'finished'; - exit(); - } - //初始化Google_Client - require_once APPPATH . 'libraries/Google_Client/Google_Client.php'; - require_once APPPATH . 'libraries/Google_Client/contrib/Google_AnalyticsService.php'; - $baseurl = site_url("Keyworlds/get_google_analytics_data/"); - $revokeUrl = $baseurl . '?action=revoke'; - - //google分析接口过滤条件 - $site_config = array('cht' => 5120, 'gm' => 6028186, 'vc' => 68571571, 'vac' => 68484932, 'ru' => 68577400, 'it' => 68564185, 'jp' => 574459, 'tbt' => 715050, 'sht' => 4705635, 'yz' => 68484504, 'gl' => 68460695, 'mbj' => 68479244, 'ct' => 8567691); - $profileId = $site_config[$sitecode]; //网站标志ID - $analytics_start_time = date('Y-m-d', time() - 7 * 24 * 60 * 60); //获取数据的开始时间 - $analytics_end_time = date('Y-m-d', time()); //获取数据的结束时间 - //授权设置 - $client = new Google_Client(); - $client->setClientId('50804699713-l5sfpffqpo4kbrbhk9tf53049labr214.apps.googleusercontent.com'); - $client->setClientSecret('_IpQ8Qi1QFlogmxiMhIRHgEa'); - $client->setRedirectUri('http://localhost:9999/info.php/Keyworlds/get_google_analytics_data'); - $client->setApplicationName('Google Analytics Application'); - $client->setScopes(array('https://www.googleapis.com/auth/analytics.readonly')); - $client->setUseObjects(true); - $client->setAccessType('offline'); - - //解除授权 - if (isset($_GET['action']) && $_GET['action'] == 'revoke') { - $accessToken = $_SESSION['access_token']; - if ($accessToken) { - $tokenObj = json_decode($accessToken); - $client->revokeToken($tokenObj->refresh_token); - unset($_SESSION['access_token']); - } - header("Location: $baseurl"); - } - //获取授权 - if (isset($_SESSION['access_token'])) { - $accessToken = $_SESSION['access_token']; - $client->setAccessToken($accessToken); - } else { - //授权过期重新生成access_token - $client->refreshToken('1/ZX7Qo-m_rxIL1_LqE8vM2sYKATkAJxm0Fc5g7BRXeo0'); - $_SESSION['access_token'] = $client->getAccessToken(); - //$accessToken = $client->authenticate(); - //$_SESSION['access_token'] = $accessToken; - } - - //获取数据 - if ($client->getAccessToken()) { - $analytics = new Google_AnalyticsService($client); - //获取详细信息 - $results = $analytics->data_ga->get( - 'ga:' . $profileId, $analytics_start_time, $analytics_end_time, 'ga:visits', array( - 'dimensions' => 'ga:pagePath,ga:source,ga:keyword', - 'metrics' => 'ga:pageviews,ga:uniquePageviews,ga:avgTimeOnPage,ga:entrances,ga:exitRate,ga:pageValue', - 'sort' => '-ga:pageviews', - 'max-results' => '10000', - 'start-index' => $start_index - ) - ); - } - $_SESSION['access_token'] = $client->getAccessToken(); - - $columnheader = array('pagepath', 'source', 'keyword', 'pv', 'uv', 'avgtimeonpage', 'entrances', 'exitrate', 'pageValue'); - $output = array(); - $txt = ''; - foreach ($results->getRows() as $row) { - foreach ($row as $i => $cell) { - $table[$columnheader[$i]] = htmlspecialchars($cell, ENT_NOQUOTES); - } - $txt.=$table['source'] . '|@|' . $table['pv'] . '|@|' . $table['uv'] . '|@|' . $table['avgtimeonpage'] . '|@|' . $table['entrances'] . '|@|' . $table['exitrate'] . '|@|' . $table['pageValue'] . '|@|' . time() . '|@|' . $sitecode . '|@|' . $table['pagepath'] . '|@|' . substr($table['keyword'], 0, 255) . "\r\n"; - $output[] = $table; - unset($table); - } - $fp = fopen(APPPATH . 'helpers/analytics_data.txt', 'wb'); - fwrite($fp, $txt); - fclose($fp); - $this->analytics_model->add_analytics_by_txt(); - echo $sitecode; + return $rank; } //从cvs文件导入关键词 @@ -669,8 +541,8 @@ class Keyworlds extends CI_Controller { if (($handle = fopen($filename, "r")) !== false) { while (($dataSrc = fgetcsv($handle)) !== false) { $num = count($dataSrc); - for ($c = 0; $c < $num; $c++) {//列 column - if ($row === 1) {//第一行作为字段 + for ($c = 0; $c < $num; $c++) {//列 column + if ($row === 1) {//第一行作为字段 $dataName[] = $dataSrc[$c]; //字段名称 } else { foreach ($dataName as $k => $v) { @@ -699,70 +571,6 @@ class Keyworlds extends CI_Controller { } } - //收录查询结果 - public function check_embody() { - $this->load->model('InfoMetas_model'); - $this->load->model('InfoSMS_model'); - //获取未收录的数据 - $today_date = date('Y-m-d', time() - 3 * 24 * 60 * 60); - $embody = $this->InfoMetas_model->get_unembody_content($today_date); - if (empty($embody)) { - return false; - } - - //页面url - $embody = $embody[0]; - if ($embody->ic_url == '') - return false; - $site = $this->config->item('site'); - $site_url = $site[$embody->ic_sitecode]['site_url']; - $site_url = $site_url . $embody->ic_url; - //收录查询搜索url - $search_worlds = 'site:' . $site_url; - $search_worlds; - $google_url = 'google.com'; - $language = 'en'; - $language_array = array('gm' => 'de', 'vc' => 'fr', 'vac' => 'es', 'ru' => 'ru', 'it' => 'it', 'jp' => 'jp'); - if (!empty($language_array[$embody->ic_sitecode])) - $language = $language_array[$embody->ic_sitecode]; - - - //抓取google搜索结果 - $this->load->library('Snoopy'); - $snoopy = $this->snoopy; - $snoopy->maxredirs = 0; - $snoopy->agent = '(compatible; MSIE 9; MSN 8; AOL 4.0; Windows 98)'; //模拟浏览器 - if ($snoopy->fetch("http://www.$google_url/search?q=$search_worlds&start=0&num=10&hl=$language")) { - $response = $snoopy->results; - if (false !== stripos($response, '

    302 Moved

    ')) { - echo 302; - return false; - } - preg_match_all('/

    (.*)<\/h3>/smUi', $response, $store); - if (isset($store[1][0]) && false !== stripos($store[1][0], $site_url)) { - $ismatch = stripos($store[1][0], $site_url); - $end = stripos($store[1][0], '&', $ismatch); - $source = substr($store[1][0], $ismatch, $end); - $source = explode('&', $source); - $source = $source[0]; - if ($source == $site_url) { - $this->InfoMetas_model->update($embody->im_ic_id, 'meta_embody', '1'); - $this->InfoSMS_model->add('info', $embody->im_ic_id, $embody->ic_author, 'lyy', '已收录'); - echo 'ok'; - } else { - $this->InfoMetas_model->update($embody->im_ic_id, 'meta_embody', date('Y-m-d H:i:s')); - $this->InfoSMS_model->add('info', $embody->im_ic_id, $embody->ic_author, 'lyy', '未被收录'); - echo 'no'; - } - } else { - $this->InfoMetas_model->update($embody->im_ic_id, 'meta_embody', date('Y-m-d H:i:s')); - $this->InfoSMS_model->add('info', $embody->im_ic_id, $embody->ic_author, 'lyy', '未被收录'); - echo 'no'; - } - } - echo '
    end'; - } - //定时批量更新CDN public function update_cdn() { $this->load->model('Logs_model'); @@ -824,44 +632,43 @@ class Keyworlds extends CI_Controller { var_dump($notice); } - public function mobile_friendly_test() { - set_time_limit(60); - $url = $this->input->post('pageurl'); - $googleapis = 'https://www.googleapis.com/pagespeedonline/v3beta1/mobileReady?url=' . $url; - + protected function curl($url, $useragent = 'PC', $referer = false) { + if ($useragent == 'PC') { + $useragent = "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22"; + } else { + $useragent = "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Mobile Safari/537.36"; + } $ch = curl_init(); - curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0); - curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22'); + curl_setopt($ch, CURLOPT_URL, $url); + curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30); curl_setopt($ch, CURLOPT_TIMEOUT, 30); + curl_setopt($ch, CURLOPT_FAILONERROR, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); - curl_setopt($ch, CURLOPT_URL, $googleapis); - $response2 = curl_exec($ch); - $response = json_decode($response2); - - $data['pageurl'] = $url; - $data['score'] = 60; - $data['pass'] = false; - isset($response->ruleGroups->USABILITY->score) && $data['score'] = $response->ruleGroups->USABILITY->score; - isset($response->ruleGroups->USABILITY->pass) && $data['pass'] = $response->ruleGroups->USABILITY->pass; - if (empty($response2)) { - $pass_text = '请求超时'; - $title = '请求超时,请稍后再试!'; - $link_color = 'text-error'; - $data['score'] = '-'; - } elseif ($data['pass']) { - $pass_text = 'OK'; - $link_color = 'text-info'; - $title = 'Awesome! This page is mobile-friendly (友好度' . $data['score'] . ', 总分100分)'; + curl_setopt($ch, CURLOPT_USERAGENT, $useragent); + // curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5_HOSTNAME); + // curl_setopt($ch, CURLOPT_PROXY, "202.103.68.28:11111"); // 本地代理 + if ($referer) { + curl_setopt($ch, CURLOPT_REFERER, $referer); + } + + $headers = array('content-type: application/x-www-form-urlencoded;charset=UTF-8'); + curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); + + $reponse = curl_exec($ch); + + if (curl_errno($ch)) { + log_message('error', "curl error code: ".curl_error($ch).";"); } else { - $pass_text = 'No'; - $title = 'Not mobile-friendly (友好度' . $data['score'] . ', 总分100分)'; - $link_color = 'text-error'; + $httpStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); + if (200 !== $httpStatusCode) { + log_message('error', "curl Request html Status Code: ".$httpStatusCode.";"); + } } - $html = '
    ' . $pass_text . ',友好度:' . $data['score'] . ''; - echo $html; + curl_close($ch); + return $reponse; } } diff --git a/application/models/infokeywords_model.php b/application/models/infokeywords_model.php index c6c216fc..a18dc82d 100644 --- a/application/models/infokeywords_model.php +++ b/application/models/infokeywords_model.php @@ -15,11 +15,11 @@ class infoKeywords_model extends CI_Model kw_keyworlds+'('+isnull((select top 1 kwr_rank from infoKeywordsrank where kwr_kw_id=kw_id order by kwr_id desc),'#')+')' as name, kw_status AS status, kw_id - FROM infoKeywords - INNER JOIN infoStructures is1 ON kw_is_id = is1.is_id + FROM infoKeywords + INNER JOIN infoStructures is1 ON kw_is_id = is1.is_id WHERE kw_sitecode = ? ORDER BY is1.is_level ASC, - is1.is_sort ASC, + is1.is_sort ASC, is1.is_path ASC"; $query = $this->HT->query($sql, array($this->config->item('site_code'))); return $query->result(); @@ -67,10 +67,8 @@ class infoKeywords_model extends CI_Model public function get_keyworld_list($top=1,$engines='',$site_code=false) { $today = strtotime(date('Y-m-d')); - $mapsql=""; - $map=" AND kw_datetime<'$today'"; + $map = " "; if ($engines=='yandex') { - $mapsql="LEFT JOIN infoKeywordsrank ON kwr_kw_id=kw_id and kwr_datetime<'$today'"; $map=" AND kw_sitecode='ru' "; }elseif ($engines=='baidu') { $map.=" AND kw_sitecode='wt' "; @@ -88,11 +86,17 @@ class infoKeywords_model extends CI_Model kw_is_id, kw_sitecode, kw_datetime, - kw_status - FROM infoKeywords $mapsql + kw_status, + kwr_datetime, + kwr_rank, + kwr_mobile_rank, + kwr_id + FROM infoKeywords INNER JOIN infoKeywordsrank ON kwr_kw_id=kw_id + AND kwr_id = ( SELECT MAX(kwr_id) FROM infoKeywordsrank WHERE kwr_kw_id=kw_id ) + AND (kwr_datetime<'$today' + OR kwr_mobile_rank IS NULL) WHERE kw_status=1 $map ORDER BY newid()"; - $query = $this->HT->query($sql); //print_r($this->HT->queries); $result = $query->result(); @@ -107,7 +111,7 @@ class infoKeywords_model extends CI_Model kw_is_id, kw_sitecode, kw_datetime, - kw_status + kw_status FROM infoKeywords WHERE kw_id=?"; @@ -121,14 +125,14 @@ class infoKeywords_model extends CI_Model //根据结构ID获取关键词内容 public function get_keyworld_bytreeid($treeid){ - $sql = "SELECT TOP 1 + $sql = "SELECT TOP 1 kw_keyworlds, kw_is_id, kw_id, kw_sitecode, kw_datetime, kw_status - FROM infoKeywords + FROM infoKeywords WHERE kw_sitecode = ? AND kw_is_id=?"; $query = $this->HT->query($sql, array($this->config->item('site_code'),$treeid)); $result = $query->result(); @@ -147,7 +151,7 @@ class infoKeywords_model extends CI_Model kw_is_id, kw_sitecode, kw_datetime, - kw_status + kw_status FROM infoKeywords WHERE kw_keyworlds like '%$keyworld%' AND kw_sitecode = ?"; @@ -158,11 +162,11 @@ class infoKeywords_model extends CI_Model public function get_compare_rank($order='asc') { $m_datetime=date('Y-m-d 00:00:00'); - $sql="SELECT top 50 * - FROM infoKeywords + $sql="SELECT top 50 * + FROM infoKeywords INNER JOIN infosms on m_object_type='keywords_rank' and kw_id=m_object_id WHERE kw_sitecode = ? and m_readed = 0 order by cast(cast(m_content AS CHAR(50)) as int) $order"; $query = $this->HT->query($sql, array($this->config->item('site_code'),$m_datetime)); return $query->result(); } -} \ No newline at end of file +} diff --git a/application/models/infokeywordsrank_model.php b/application/models/infokeywordsrank_model.php index 213749de..6629f407 100644 --- a/application/models/infokeywordsrank_model.php +++ b/application/models/infokeywordsrank_model.php @@ -9,27 +9,31 @@ class infoKeywordsrank_model extends CI_Model } //添加关键词排名 - public function add_rank($kwr_kw_id,$kwr_rank,$kwr_source,$kwr_engines) + public function add_rank($kwr_kw_id,$kwr_rank,$kwr_mobile_rank,$kwr_source,$kwr_mobile_source,$kwr_engines) { $sql = "INSERT INTO infoKeywordsrank ( kwr_kw_id, kwr_rank, + kwr_mobile_rank, kwr_source, + kwr_mobile_source, kwr_datetime, kwr_engines - ) VALUES (?,?,?,?,?)"; - $query = $this->HT->query($sql, array($kwr_kw_id,$kwr_rank,$kwr_source,time(),$kwr_engines)); + ) VALUES (?,?,?,?,?,?,?)"; + $query = $this->HT->query($sql, array($kwr_kw_id,$kwr_rank,$kwr_mobile_rank,$kwr_source,$kwr_mobile_source,time(),$kwr_engines)); return $this->HT->last_id('infoKeywordsrank'); } //更新关键词排名 - public function update_rank($kwr_id,$rank,$source){ + public function update_rank($kwr_id,$rank,$mobile_rank,$source,$mobile_source){ $set_sql = "UPDATE infoKeywordsrank SET kwr_datetime = ?, kwr_rank=?, - kwr_source=? + kwr_mobile_rank=?, + kwr_source=?, + kwr_mobile_source=? WHERE kwr_id = ?"; - $result=$this->HT->query($set_sql, array(time(),$rank,$source,$kwr_id)); + $result=$this->HT->query($set_sql, array(time(),$rank,$mobile_rank,$source,$mobile_source,$kwr_id)); return $result; } @@ -43,10 +47,12 @@ class infoKeywordsrank_model extends CI_Model }else{ $topmap= "TOP $top"; } - $sql = "SELECT $topmap kwr_id, + $sql = "SELECT $topmap kwr_id, kwr_kw_id, kwr_rank, + kwr_mobile_rank, kwr_source, + kwr_mobile_source, kwr_engines, kwr_datetime, kw_keyworlds @@ -71,4 +77,4 @@ class infoKeywordsrank_model extends CI_Model $query = $this->HT->query($sql, array($kwr_id)); return $query; } -} \ No newline at end of file +} diff --git a/application/third_party/dingding_auth/controllers/index.php b/application/third_party/dingding_auth/controllers/index.php new file mode 100644 index 00000000..7b5798ad --- /dev/null +++ b/application/third_party/dingding_auth/controllers/index.php @@ -0,0 +1,110 @@ +curPageURL(); + $nonceStr = 'abcdefg&cits@123#'; + $timeStamp = time(); + $corpId = 'ding48bce8fd3957c96b'; + $secret = '4I_TlkOUtWQ60tUYX_447WXM5mNX41q_Q03xtZJgvBOzMPzGbNKZZz_Bsv-0B9I1'; + + //缓存accessToken。accessToken有效期为两小时,需要在失效前请求新的accessToken(注意:以下代码没有在失效前刷新缓存的accessToken)。 + $cookie_accessToken = 'Token_' . $agentId; + $accessToken = isset($_COOKIE[$cookie_accessToken]) ? $_COOKIE[$cookie_accessToken] : false; + if (empty($accessToken)) { + $response = GET_HTTP("https://oapi.dingtalk.com/gettoken?corpid=$corpId&corpsecret=$secret"); + if (empty($response)) { + log_message('error', "accessToken gethttp"); + return false; + } + $accessToken = json_decode($response)->access_token; + setcookie($cookie_accessToken, $accessToken, time() + 7140, '/'); + } + + $cookie_jsapi_ticket = 'Ticket_' . $agentId; + $jsapi_ticket = isset($_COOKIE[$cookie_jsapi_ticket]) ? $_COOKIE[$cookie_jsapi_ticket] : false; + if (empty($jsapi_ticket)) { + $response = GET_HTTP("https://oapi.dingtalk.com/get_jsapi_ticket?type=jsapi&access_token=$accessToken"); + if (empty($response)) { + log_message('error', "jsapi_ticket gethttp"); + return false; + } + $jsapi_ticket = json_decode($response)->ticket; + setcookie($cookie_jsapi_ticket, $jsapi_ticket, time() + 7140, '/'); + } + + $signature = sha1('jsapi_ticket=' . $jsapi_ticket . '&noncestr=' . $nonceStr . '×tamp=' . $timeStamp . '&url=' . $url); + + $config = array( + 'url' => $url, + 'nonceStr' => $nonceStr, + 'agentId' => $agentId, + 'timeStamp' => $timeStamp, + 'corpId' => $corpId, + 'signature' => $signature, + 'accessToken' => $accessToken, + ); + + $data['auth_config'] = json_encode($config); + $this->load->view('welcome', $data); + //print_r($data); + } + + public function curPageURL() { + $pageURL = 'http'; + + if (array_key_exists('HTTPS', $_SERVER) && $_SERVER["HTTPS"] == "on") { + $pageURL .= "s"; + } + $pageURL .= "://"; + + if ($_SERVER["SERVER_PORT"] != "80") { + $pageURL .= $_SERVER["SERVER_NAME"] . ":" . $_SERVER["SERVER_PORT"] . $_SERVER["REQUEST_URI"]; + } else { + $pageURL .= $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"]; + } + return $pageURL; + } + + //$agentId 应用ID,用来判断应该跳转到哪里去 + //$user_code 用户code,需要再次请求接口来获取用户详细信息 + public function authOnSuccess($agentId,$accessToken, $user_code) { + $response =GET_HTTP("https://oapi.dingtalk.com/user/getuserinfo?access_token=$accessToken&code=$user_code"); + if (empty($response)) { + log_message('error', "getuserinfo gethttp"); + return false; + } + $userid = json_decode($response)->userid; + $response =GET_HTTP("https://oapi.dingtalk.com/user/get?access_token=$accessToken&userid=$userid"); + if (empty($response)) { + log_message('error', "user gethttp"); + return false; + } + $response= json_decode($response); + if(!empty($response) && $response->errcode==0){ + $username= $response->name; + redirect("http://doc.mycht.cn/index.php?user/loginSubmit&name=$username&password=9Q7gJ3239aK_8LA"); + }else{ + print_r($response); + } + } + +} diff --git a/application/third_party/dingding_auth/views/welcome.php b/application/third_party/dingding_auth/views/welcome.php new file mode 100644 index 00000000..6ff0affc --- /dev/null +++ b/application/third_party/dingding_auth/views/welcome.php @@ -0,0 +1,82 @@ + + + + + + + 钉钉授权 + + + + + + + +
    +

    授权登录中,请稍候...

    +
    + + diff --git a/application/third_party/htmlcompressor/controllers/index.php b/application/third_party/htmlcompressor/controllers/index.php index c2b57b76..c530f0ac 100644 --- a/application/third_party/htmlcompressor/controllers/index.php +++ b/application/third_party/htmlcompressor/controllers/index.php @@ -20,6 +20,7 @@ class Index extends CI_Controller { if (empty($htmlsource) || empty($websitehost)) { $this->output->set_status_header(500); echo 'error:htmlsource or websitehost is empty!'; + log_message('error', "htmlsource or websitehost is empty! " . $websitehost); return false; } //域名后面不能有/ @@ -45,6 +46,7 @@ class Index extends CI_Controller { if ($get_http_temp == false) { $this->output->set_status_header(404); echo 'CSS文件下载错误'; + log_message('error', "optimize CSS文件下载错误! " . $item); return FALSE; } $css_content.=$get_http_temp; @@ -87,6 +89,7 @@ class Index extends CI_Controller { if ($get_http_temp == false) { $this->output->set_status_header(404); echo 'JS文件下载错误'; + log_message('error', "optimize js文件下载错误! " . $item); return FALSE; } $js_scr_content.=$get_http_temp; diff --git a/application/third_party/train/controllers/index.php b/application/third_party/train/controllers/index.php index 04074e90..48d2673b 100644 --- a/application/third_party/train/controllers/index.php +++ b/application/third_party/train/controllers/index.php @@ -127,7 +127,7 @@ class Index extends CI_Controller{ $to_date=$this->input->post("to_date"); $examine=$this->input->post("examine"); $reback=array();//返回的数据 - $reback["from_date"]=$from_date; + $reback["from_date"]=$from_date; $reback["to_date"]=$to_date; $reback["examine"]=$examine; if(!empty($from_date) && !empty($to_date)){ diff --git a/application/third_party/train/controllers/search.php b/application/third_party/train/controllers/search.php index dee7bf9d..18109911 100644 --- a/application/third_party/train/controllers/search.php +++ b/application/third_party/train/controllers/search.php @@ -10,8 +10,11 @@ class search extends CI_Controller{ } //查询聚合余票接口,对返回的数据进行处理 - public function index($train_date,$fromStation,$toStation){ - $url = 'http://op.juhe.cn/trainTickets/ticketsAvailable?key='.JUHE_TRAIN_API_KEY.'&train_date='.$train_date.'&from_station='.$fromStation.'&to_station='.$toStation; + public function index($train_date=null,$fromStation=null,$toStation=null){ + if(!$train_date || !$fromStation || !$toStation){ + exit('传参错误!'); + }else{ + $url = 'http://op.juhe.cn/trainTickets/ticketsAvailable?key='.JUHE_TRAIN_API_KEY.'&train_date='.$train_date.'&from_station='.$fromStation.'&to_station='.$toStation; $back_data = $this->get_http($url); //print_r(json_decode($back_data)); $return_data = new stdClass(); @@ -100,6 +103,7 @@ class search extends CI_Controller{ } $return_data->data->map = (object)$obj; print_r(json_encode($return_data)); + } } //获取价格 @@ -108,12 +112,16 @@ class search extends CI_Controller{ toStationCode:终点站三字码 trainCode:车次号 */ - public function get_price($fromStationCode,$toStationCode,$trainCode){ - $return_data = $this->BIZ_train_model->get_price($fromStationCode,$toStationCode,$trainCode); - if(!empty($return_data)){ - print_r(json_decode($return_data->TPL_Price)); + public function get_price($fromStationCode=null,$toStationCode=null,$trainCode=null){ + if(!$fromStationCode || !$toStationCode || !$trainCode){ + exit('传参错误!'); }else{ - print_r('没有数据返回'); + $return_data = $this->BIZ_train_model->get_price($fromStationCode,$toStationCode,$trainCode); + if(!empty($return_data)){ + print_r(json_decode($return_data->TPL_Price)); + }else{ + print_r('没有数据返回'); + } } } diff --git a/application/third_party/tuniu/controllers/tuniu_train.php b/application/third_party/tuniu/controllers/tuniu_train.php index 1b54e761..1eb329e6 100644 --- a/application/third_party/tuniu/controllers/tuniu_train.php +++ b/application/third_party/tuniu/controllers/tuniu_train.php @@ -35,8 +35,11 @@ class Tuniu_train extends CI_Controller{ } //获取余票 - public function search($date,$fromStation,$toStation){ - $sign = $this->create_sign(); + public function search($date=null,$fromStation=null,$toStation=null){ + if(!$date || !$fromStation || !$toStation){ + exit('传参错误!'); + }else{ + $sign = $this->create_sign(); $url = TUNIU_URL.'/train/search'; $time = date('Y-m-d H:i:s',time()); $post_data = '{ @@ -135,6 +138,7 @@ class Tuniu_train extends CI_Controller{ } $return_data->data->map = (object)$obj; print_r(json_encode($return_data)); + } } //获取价格 @@ -143,9 +147,13 @@ class Tuniu_train extends CI_Controller{ toStationCode:终点站三字码 trainCode:车次 */ - public function get_price($fromStationCode,$toStationCode,$trainCode){ - $return_data = $this->tuniuprice_model->get_price($fromStationCode,$toStationCode,$trainCode); - print_r(json_decode($return_data->TPL_Price)); + public function get_price($fromStationCode=null,$toStationCode=null,$trainCode=null){ + if(!$fromStationCode || !$toStationCode || !$trainCode){ + exit('传参错误!'); + }else{ + $return_data = $this->tuniuprice_model->get_price($fromStationCode,$toStationCode,$trainCode); + print_r(json_decode($return_data->TPL_Price)); + } } //占座下单 @@ -282,6 +290,21 @@ class Tuniu_train extends CI_Controller{ print_r($back_data); } + //车站三字码查询 + public function telecodeQuery(){ + $sign = $this->create_sign(); + $url = TUNIU_URL.'/train/telecodeQuery'; + $time = date('Y-m-d H:i:s',time()); + $post_data = '{ + "apiKey": "'.TUNIU_KEY.'", + "sign": "'.$sign.'", + "timestamp": "'.$time.'", + "data": null + }'; + $back_data = post_tuniu($url,$post_data,$method = 'POST'); + print_r($back_data); + } + //身份验证 public function validate(){ //$name = $this->input->post('name'); diff --git a/application/views/keyworlds/index.php b/application/views/keyworlds/index.php index 2a9365b5..0fb8187d 100644 --- a/application/views/keyworlds/index.php +++ b/application/views/keyworlds/index.php @@ -31,7 +31,7 @@

  • - +
    kw_is_id"); ?>">
    @@ -48,53 +48,28 @@ # 时间 - 来源 - 排名 + 来源(PC/Mobile) + 排名(PC/Mobile) - $rank) { ?> + $rank) { ?> - + kwr_datetime); ?> - kwr_source; ?> - kwr_rank; ?> + + kwr_source; ?> +
    + kwr_mobile_source; ?> + + kwr_rank; ?> --  + kwr_mobile_rank ? $rank->kwr_mobile_rank : '未抓取'; echo $kwr_mobile_rank; ?>

    - - - 访问量明细 - - - - - - - - - - - - - - $a) { ?> - - - - - - - - - - - -
    #时间路径PVUV平均停留时间跳出率
    kwa_datetime-7*24*60*60); ?>kwa_pagepath; ?>kwa_pageviews; ?>kwa_uniquepageviews; ?>kwa_avgtimeonpage,1); ?>kwa_exitrate,1); ?>%
    -
    @@ -252,12 +227,12 @@ } //选择节点 var node = zTree.getNodeByParam("id",kw_is_id; ?>); - zTree.selectNode(node); + zTree.selectNode(node); $("#startdate,#enddate").datepicker({ showButtonPanel: true, dateFormat:'yy-mm-dd' - }); + }); }); //删除结构和信息 @@ -353,7 +328,7 @@ categories: , labels: {rotation: -45,align: 'right'} }, - yAxis: {title: {text: '关键词排名'}}, + yAxis: {title: {text: '关键词排名'},reversed:true,allowDecimals:false,min:0, startOnTick:false}, tooltip: { enabled: true, formatter: function() { @@ -389,4 +364,4 @@ }); - \ No newline at end of file + diff --git a/media/popselectpicture.php b/media/popselectpicture.php index 872868ef..3982f615 100644 --- a/media/popselectpicture.php +++ b/media/popselectpicture.php @@ -1,3 +1,4 @@ + @@ -91,11 +92,14 @@ function is_remote_ip() //print_r($_SERVER); echo ''; - if (stripos($ip_list,'202.103.68.34')!==false) { - return false; - }elseif (stripos($ip_list,'221.7.151.39')!==false || stripos($ip_list,'221.7.151.37')!==false || stripos($ip_list,'221.7.151.41')!==false || stripos($ip_list,'111.59.90.31')!==false || stripos($ip_list,'180.140.114.208')!==false ){ - return false; - }else if($ip_list!=='::1'){ //这个也是本地IP + if (stripos($ip_list,'202.103.68.34')!==false + || stripos($ip_list,'221.7.151.39')!==false + || stripos($ip_list,'221.7.151.37')!==false + || stripos($ip_list,'221.7.151.41')!==false + || stripos($ip_list,'111.59.90.31')!==false + || stripos($ip_list,'180.140.114.208')!==false + || stripos($ip_list,'::1')!==false //这个也是本地IP + ){ return false; } return true; @@ -108,15 +112,9 @@ function is_remote_ip() } else { $rwidth = ''; }?> - - - - - - - - - + + +