学习笔记

  > 百度推送的curl方法

百度推送的curl方法

其实这个方法,在百度里写的很清楚,不过更重要的是要考察json的使用以及curl的使用。

我使用的ajax方法来处理。这是后台的提交代码。

public function ajax_post()
{
	$ids = $this->input->post("ids");
	$ids = !empty($ids) ? $ids : exit("参数传递有误");
	$ids = substr($ids,0,-1);
	$arr_id = explode(",", $ids);

	foreach ($arr_id as $k => $v) 
	{
		$urls[] = "http://www.liulize.com/article/{$v}.html";
		$this->db->set('postbaidu','postbaidu+1',false)->where('id',$v)->update('articles'); //提交次数+1
	}


	$api = 'http://data.zz.baidu.com/urls?site=www.liulize.com&token=你的token';
	$ch = curl_init();
	$options =  array(
	    CURLOPT_URL => $api,
	    CURLOPT_POST => true,
	    CURLOPT_RETURNTRANSFER => true,
	    CURLOPT_POSTFIELDS => implode("\n", $urls),
	    CURLOPT_HTTPHEADER => array('Content-Type: text/plain'),
	);
	curl_setopt_array($ch, $options);
	$result = curl_exec($ch);

	echo $result;
}

而前台的代码如下:

我粘贴比较关键的地方。

<?php foreach ($lists as $k => $v): ?>
<tr class="gradeA even">
    <td class="center">
        <input type="checkbox" name="ids[]" value="<?php echo $v['id']; ?>">&nbsp;<?php echo $v['id']; ?>
    </td>
    <td>
        <a href="article/show/<?php echo $v['id']; ?>/" target="_blank"><?php echo $v['title'] ?></a>
    </td>
    <td><?php echo date('Y-m-d H:i:s',$v['updatetime']); ?></td>
    <td><?php echo $v['postbaidu']; ?></td>
</tr>    
<?php endforeach ?> 

触发器

<div class="col-sm-6">
    <div class="oprate">
        <button class="btn btn-primary" id="baidu_post">百度推送</button>
    </div>
</div>
$("#baidu_post").click(function(){
    
    $("input[name='ids[]']").each(function(){
        if ( $(this).is(':checked') ) {
            str_chk = $(this).val() + "," + str_chk;
        };
    })
    if ( str_chk == '' ) {
        alert('请选择数据');
        return false;
    } else {
        $.post("admin.php/seo/ajax_post/",{ids:str_chk},function(data,textStatus){
            data = JSON.parse(data);
            if ( data.success > 1 ){
                alert('操作成功,已经成功推送'+data.success+'条,还可以继续推送'+data.remain+'条');
                parent.location.reload();
            }else{
                alert('操作失败,状态码' + data.error + '原因描述:' + data.message);
                // parent.location.reload();  
            }
        });
    }
    

});

这是一段js操作,str_chk是用来处理单选和复选的,不在多说了。

2018年5月23日19:35:31

更正一个地方。

if ( data.success > 1 ){ 

改为

 if ( data.success > 0 ){

原因是发一条的时候有些问题。。

发布时间:2018-05-22,18:18:14

百度推送的curl方法,很简单。

作者:澎蠡

让学习成为一种习惯,让知识交流变成一种生活方式。