Merge branch 'master' into feature/pay

feature/trippest
lyt 8 years ago
commit 0b94473ecf

@ -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')),

@ -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 class="r">(.*)<\/h3>/smUi';
$rank_flag = 'rank';
$source_flag = 'source';
if ($client_flag == 'm') {
$match_fun = '/<a class="_Olt _bCp"(.*)<div/smUi';
$rank_flag = 'rank_m';
$source_flag = 'source_m';
}
$response = $this->curl($url,$client_flag);
if ($response) {
//分析google搜索结果计算排名
if (false !== stripos($response, '<h1>302 Moved</h1>')) {
$rank['rank'] = -2;
} elseif (false !== stripos($response, $site_url)) {
preg_match_all('/<h3 class="r">(.*)<\/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, '<h1>302 Found</h1>')) {
$url = "https://www.yandex.ru/yandsearch?p=$page&text=$search_worlds&lr=21436";
$refer = "https://www.yandex.ru/";
$match_fun = '/<a class=\"link link_theme_normal organic__url link_cropped_no i-bem\"(.*)class=/smUi';
$rank_flag = 'rank';
$source_flag = 'source';
if ($client_flag == 'm') {
$match_fun = '/<a class="link link_theme_normal organic__url i-bem"(.*)class=/smUi';
$rank_flag = 'rank_m';
$source_flag = 'source_m';
}
$response = $this->curl($url,$client_flag,$refer);
if ($response) {
// 分析YANDEX搜索结果计算排名
if (false !== stripos($response, '<h1>302 Found</h1>') ||
false !== stripos($response, 'капчей') || false !== stripos($response, 'captcha')) {
$rank['rank'] = -2;
} elseif (false !== stripos($response, $site_url)) {
preg_match_all("/<b class=\"b-serp-item__number\">(.*)<\/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('/<div id=\"web\">(.*)<\/ol>/smUi', $response, $search_c);
if (false !== stripos($search_c[0][0], $site_url)) {
preg_match_all('/<li><a(.*)<\/a>/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, '"><b>', $ismatch);
$source = substr($v, $ismatch, $end);
$source = explode('"><b>', $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, '<h1>302 Moved</h1>')) {
echo 302;
return false;
}
preg_match_all('/<h3 class="r">(.*)<\/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 '<br>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 = '<a title="' . $title . '" class="' . $link_color . '" target="__blank" href="https://developers.google.com/speed/pagespeed/insights/?utm_source=analytics&tab=mobile&url=' . $data['pageurl'] . '"><span>' . $pass_text . ',友好度:' . $data['score'] . '</span></a>';
echo $html;
curl_close($ch);
return $reponse;
}
}

@ -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();
}
}
}

@ -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;
}
}
}

@ -0,0 +1,110 @@
<?php
if (!defined('BASEPATH'))
exit('No direct script access allowed');
class Index extends CI_Controller {
public function __construct() {
parent::__construct();
}
//获取钉钉用户授权信息
public function auth($agentId) {
$data = array();
//$agentId 应用ID如果没有传进来跳到错误页面
if (empty($agentId)) {
echo 'agentId不能为空';
return false;
}
//生成签名
$url = $this->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 . '&timestamp=' . $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);
}
}
}

@ -0,0 +1,82 @@
<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>钉钉授权</title>
<script type="text/javascript" src="https://g.alicdn.com/dingding/open-develop/1.6.9/dingtalk.js"></script>
<script type="text/javascript" src="https://g.alicdn.com/dingding/dingtalk-pc-api/2.7.0/index.js"></script>
<script src="/js/jquery.min.js"></script>
<script type="text/javascript">
var _config = <?php echo $auth_config; ?>;
var DingTalk = DingTalk || {};
(function (dt) {
var self = dt;
var ding;
dt.init = function () {
dt.isMobileClient = self.util.isMobileClient();
ding = self.isMobileClient ? dd : DingTalkPC;
};
dt.auth = function () {
ding.config({
agentId: _config.agentId,
corpId: _config.corpId,
timeStamp: _config.timeStamp,
nonceStr: _config.nonceStr,
signature: _config.signature,
jsApiList: [
'runtime.permission.requestAuthCode',
'device.notification.alert',
'device.notification.confirm',
'biz.contact.choose',
'device.notification.prompt',
'biz.ding.post'
] // 必填需要使用的jsapi列表
});
ding.userid = 0;
ding.ready(function (res) {
ding.runtime.permission.requestAuthCode({
corpId: _config.corpId, //企业ID
onSuccess: function (info) {
console.log('auth success ');
window.location.href = "/info.php/apps/dingding_auth/index/authOnSuccess/" +_config.agentId+'/'+_config.accessToken+'/'+ info.code;
},
onFail: function (err) {
console.log(JSON.stringify(err));
}
});
});
ding.error(function (error) {
console.log('dd error: ' + JSON.stringify(error));
});
};
dt.util = {
isMobileClient: function () {
return /(iPhone|iPod|Android|ios|iOS|iPad|Backerry|WebOS|Symbian|Windows Phone|Phone)/i.test(navigator.userAgent);
}
};
window.DingTalk = dt;
})(DingTalk);
DingTalk.init();
DingTalk.auth();
</script>
</head>
<body>
<div>
<p class="text-center">授权登录中,请稍候...</p>
</div>
</body>
</html>

@ -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;

@ -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)){

@ -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('没有数据返回');
}
}
}

@ -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');

@ -31,7 +31,7 @@
<?php echo isset($rank_change_html)?$rank_change_html:''; ?>
</div>
<div id="rankinfo">
<form class="span3" style="position: absolute;top: 165px;z-index: 100;right: 50px;" method="post" action="<?php echo site_url("Keyworlds/index/$current_keyworld->kw_is_id"); ?>">
<div class="input-append">
<button class="btn pull-right" type="submit">查询</button>
@ -48,53 +48,28 @@
<tr>
<th>#</th>
<th>时间</th>
<th>来源</th>
<th>排名</th>
<th>来源(PC/Mobile)</th>
<th>排名(PC/Mobile)</th>
</tr>
</thead>
<tbody>
<?php foreach ($rank_info as $k=>$rank) { ?>
<?php $ki=0; foreach ($rank_info as $k=>$rank) { ?>
<tr>
<td><?php echo $k+1; ?></td>
<td><?php echo ++$ki; ?></td>
<td><?php echo date('Y-m-d H:i:s',$rank->kwr_datetime); ?></td>
<td><a target="_blank" href="<?php echo $rank->kwr_source; ?>"><?php echo $rank->kwr_source; ?></a></td>
<td><?php echo $rank->kwr_rank; ?></td>
<td>
<a target="_blank" href="<?php echo $rank->kwr_source; ?>"><?php echo $rank->kwr_source; ?></a>
<br>
<a target="_blank" href="<?php echo $rank->kwr_mobile_source; ?>"><?php echo $rank->kwr_mobile_source; ?></a>
</td>
<td><?php echo $rank->kwr_rank; ?>&nbsp;--&nbsp;
<?php $kwr_mobile_rank = $rank->kwr_mobile_rank ? $rank->kwr_mobile_rank : '未抓取'; echo $kwr_mobile_rank; ?></td>
</tr>
<?php if($k+1==7) break; ?>
<?php } ?>
</tbody>
</table><br><br>
<?php } ?>
<?php if (!empty($analytics)) { ?>
<legend>访问量明细</legend>
<table class="table table-striped">
<thead>
<tr>
<th>#</th>
<th>时间</th>
<th>路径</th>
<th>PV</th>
<th>UV</th>
<th>平均停留时间</th>
<th>跳出率</th>
</tr>
</thead>
<tbody>
<?php foreach ($analytics as $key_a=>$a) { ?>
<tr>
<td><?php echo $key_a+1; ?></td>
<td><?php echo date('Y-m-d',$a->kwa_datetime-7*24*60*60); ?></td>
<td><?php echo $a->kwa_pagepath; ?></td>
<td><?php echo $a->kwa_pageviews; ?></td>
<td><?php echo $a->kwa_uniquepageviews; ?></td>
<td><?php echo number_format($a->kwa_avgtimeonpage,1); ?></td>
<td><?php echo number_format($a->kwa_exitrate,1); ?>%</td>
</tr>
<?php } ?>
</tbody>
</table>
<?php } ?>
</div>
</div>
</div>
@ -252,12 +227,12 @@
}
//选择节点
var node = zTree.getNodeByParam("id",<?php echo $current_keyworld->kw_is_id; ?>);
zTree.selectNode(node);
zTree.selectNode(node);
$("#startdate,#enddate").datepicker({
showButtonPanel: true,
dateFormat:'yy-mm-dd'
});
});
});
//删除结构和信息
@ -353,7 +328,7 @@
categories: <?php echo $data_time; ?>,
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 @@
<?php } ?>
});
</script>
</script>

@ -1,3 +1,4 @@
<?php header('Cache-Control: no-cache'); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head >
@ -91,11 +92,14 @@ function is_remote_ip()
//print_r($_SERVER);
echo '<!--'.$ip_list.'-->';
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 = '';
}?>
<?php if (isset($_GET['remote'])){ ?>
<?php if(is_remote_ip()){ ?>
<iframe id="test" frameborder="0" src="http://photo.chtcdn.com:3581/OutputApp/searchpicture.aspx?<?php echo($rwidth);?>webcode=<?php echo $media_site_code; ?>&lgc=<?php echo $_GET['site_lgc'];?>&apptype=translate&uname=ycc&upass=ycc&lmisn=1&WebUrl=<?php echo isset($_GET['WebUrl'])?$_GET['WebUrl']:false;?>&redirecturl=http://<?php echo $_SERVER['HTTP_HOST']; ?>/media/transitval.php" > </iframe>
<?php }else { ?>
<iframe id="test" frameborder="0" src="http://video.chtcdn.com/OutputApp/searchpicture.aspx?<?php echo($rwidth);?>webcode=<?php echo $media_site_code; ?>&lgc=<?php echo $_GET['site_lgc'];?>&apptype=translate&WebUrl=<?php echo isset($_GET['WebUrl'])?$_GET['WebUrl']:false;?>&redirecturl=http://<?php echo $_SERVER['HTTP_HOST']; ?>/media/transitval.php" > </iframe>
<?php } ?>
<?php }else if(is_remote_ip()){ ?>
<iframe id="test" frameborder="0" src="http://photo.chtcdn.com:3581/OutputApp/searchpicture.aspx?<?php echo($rwidth);?>webcode=<?php echo $media_site_code; ?>&lgc=<?php echo $_GET['site_lgc'];?>&apptype=infomation&uname=ycc&upass=ycc&lmisn=1&WebUrl=<?php echo isset($_GET['WebUrl'])?$_GET['WebUrl']:false;?>&redirecturl=http://<?php echo $_SERVER['HTTP_HOST']; ?>/media/transitval.php" > </iframe>
<?php }else{ ?>
<?php if (isset($_GET['remote']) || is_remote_ip()){ ?>
<iframe id="test" frameborder="0" src="http://photo.chtcdn.com:3581/OutputApp/searchpicture.aspx?<?php echo($rwidth);?>webcode=<?php echo $media_site_code; ?>&lgc=<?php echo $_GET['site_lgc'];?>&apptype=translate&uname=ycc&upass=ycc&lmisn=1&WebUrl=<?php echo isset($_GET['WebUrl'])?$_GET['WebUrl']:false;?>&redirecturl=http://<?php echo $_SERVER['HTTP_HOST']; ?>/media/transitval.php" > </iframe>
<?php }else{ ?>
<iframe id="test" frameborder="0" src="http://video.chtcdn.com/OutputApp/searchpicture.aspx?<?php echo($rwidth);?>webcode=<?php echo $media_site_code; ?>&lgc=<?php echo $_GET['site_lgc'];?>&apptype=infomation&WebUrl=<?php echo isset($_GET['WebUrl'])?$_GET['WebUrl']:false;?>&redirecturl=http://<?php echo $_SERVER['HTTP_HOST']; ?>/media/transitval.php" > </iframe>
<?php } ?>
</body>

Loading…
Cancel
Save