已掉线,重新登录

首页 > 绿虎论坛 > 历史版块 > 编程 > PHP

标题: 百度的主动推送为什么老是出错,求解

作者: @Ta

时间: 2019-11-16发布,2019-11-16修改

点击: 2475

最近想弃wordpress转typecho,可是找了几个typecho百度收录提交插件,发现都用不了,全都报错,于是想自己写一个小东西,没有技术,不会写插件,于是只能以下面这种方式实现:
在访问文章管理的时候,会有如下效果:
b2c69f33bf59fd286045c83a0fcc309019444.png
红框里面是图片,地址是/baidusumit.php?url=xxx,作用是查询这一行的这篇文章是否收录,然后判断是否进行推送的一个php文件,并以图片形式返回结果。

然鹅,不论如何,返回的结果都是红色N(我设定的是:已收录返回绿色Y,未收录但提交成功返回绿色N,未收录且推送失败返回红色N)

后来我单独测试了网百度推送url
结果是这样的
{"error":401,"message":"site init fail"}
这个结果百度站长后台也没有说明:
5dd6e5bc8623d1962f8330515d8f398427256.png
咋整
baidusubmit.php代码如下:
//百度主动推送

$site = '站点域名';

$token = '推送token';

$url = $_GET['url'];

if(check($url) == 0){
	//收录则返回图片‘是’
	img("Y","green");
}else{
	//未收录则提交url并返回图片‘否’
	$str = urlpost($url);
	if(checksubmit($str) == true){	
		img("N","green");
	}else{
		img("N","red");
	}
	
}


function urlpost($url){
	//推送url函数
$urls = $url;
$api = 'http://data.zz.baidu.com/urls?site='.$site.'&token='.$token;
$ch = curl_init();
$options =  array(
    CURLOPT_URL => $api,
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POSTFIELDS => $urls,
    CURLOPT_HTTPHEADER => array('Content-Type: text/plain'),
);
curl_setopt_array($ch, $options);
$result = curl_exec($ch);
return $result;
curl_close($ch);

}

function check($url){
	//检验是否收录
	$url = 'http://www.baidu.com/s?wd='.$url;
	$curl=curl_init();
	curl_setopt($curl,CURLOPT_URL,$url);
	curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);
	$rs=curl_exec($curl);
	curl_close($curl);
	if(strpos($rs,'为您找到相关结果约0个') === false && strpos($rs,'没有找到') === false && strpos($rs,'没有找到该URL') === false){
	        return 0;//已收录
	    }else{
	        return 1;//未收录

	}
	
}

function img($str,$color){
	
	//返回图片,收录返回Y,未收录返回N,提交成功返回绿色字体,失败返回红色字体
	$im = imagecreate(25, 25);
	$bg = imagecolorallocate($im, 255, 255, 255); //设置画布的背景为白色
	if($color = "red"){
		$co = imagecolorallocate($im, 255, 0, 0); //红色字体
	}else{
		$co = imagecolorallocate($im, 0, 255, 150); //绿色字体
	}
	
	imagechar($im, 5,9,4,$str,$co); 
	header('Content-type:image/png');
	imagepng($im);
}


function checksubmit($str){
	//检测推送结果
	if(strpos($str,'error') === false){
		return true;
	}else{
		return false;
	}
	
}


[隐藏样式|查看源码]


『回复列表(1|隐藏机器人聊天)』

1.

401错误
健健康康

(/@Ta/2019-11-19 08:38//)

回复需要登录

7月15日 08:38 星期二

本站由hu60wap6驱动

备案号: 京ICP备18041936号-1