PHP实现发送微博消息功能完整示例


Posted in PHP onDecember 04, 2019

本文实例讲述了PHP实现发送微博消息功能。分享给大家供大家参考,具体如下:

<?php
$cookie_file = dirname(__FILE__)."/weibo.cookie";
$username = '用户名';
$password = '密码';
  $userCenter = loginWeibo($username,$password);
  echo sendMsg("不知道能不能成功呢!");
  function sendMsg($msg){
    global $cookie_file,$userCenter;
    $posturl = "http://weibo.com/aj/mblog/add?_wv=5&__rnd=".time()."707";
    $postdata['text'] = $msg;
    $postdata['pic_id'] = "";
    $postdata['rank'] = 0;
    $postdata['rankid'] = "";
    $postdata['_surl'] = "";
    $postdata['hottopicid'] = "";
    $postdata['location'] = "home";
    $postdata['module'] = "stissue";
    $postdata['_t'] = 0;
    foreach($postdata as $key =>$value){
        $tmp .= $key."=".$value."&";
    }
    $post = trim($tmp,"&");
    $header = array(
      'Host:weibo.com',
      'Accept: */*',
      'Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3',
      'Content-Type:application/x-www-form-urlencoded',
      'X-Requested-With:XMLHttpRequest',
      'Referer: '.$userCenter,
    );
    //var_dump($header);exit;
    $ch = curl_init();
    curl_setopt($ch,CURLOPT_URL,$posturl);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
    curl_setopt($ch,CURLOPT_COOKIEFILE, $cookie_file);
    curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:30.0) Gecko/20100101 Firefox/30.0');
    curl_setopt($ch,CURLOPT_HTTPHEADER,$header);
    curl_setopt($ch,CURLOPT_POST,1);
    curl_setopt($ch,CURLOPT_POSTFIELDS,$post);
    $str = curl_exec($ch);
    curl_close($ch);
    return $str;
  }
  function loginWeibo($u,$p){
    global $cookie_file ;
    //$password = sha1(sha1(sha1($p)).$encryption['servertime'].$encryption['nonce']);
    $password = $p;
    $username = base64_encode($u);
    $loginUrl = 'https://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.15)&_=1403138799543';
    $loginData['entry'] = 'sso';
    $loginData['gateway'] = '1';
    $loginData['from'] = 'null';
    $loginData['savestate'] = '30';
    $loginData['useticket'] = '0';
    $loginData['pagerefer'] = '';
    $loginData['vsnf'] = '1';
    $loginData['su'] = base64_encode($u);
    $loginData['service'] = 'sso';
    $loginData['sp'] = $password;
    $loginData['sr'] = '1920*1080';
    $loginData['encoding'] = 'UTF-8';
    $loginData['cdult'] = '3';
    $loginData['domain'] = 'sina.com.cn';
    $loginData['prelt'] = '0';
    $loginData['returntype'] = 'TEXT';
    //var_dump($loginData);exit;
    $login = json_decode(loginPost($loginUrl,$loginData),true);
    //获取微博
    get($login['crossDomainUrlList'][0]);
    $ch = curl_init();
    curl_setopt($ch,CURLOPT_URL,"http://weibo.com");  
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);  
    curl_setopt($ch,CURLOPT_COOKIEFILE, $cookie_file);  
    curl_setopt($ch,CURLOPT_COOKIEJAR,$cookie_file);  
    $return = curl_exec($ch);
    $info = curl_getinfo($ch);
    curl_close($ch);
    $ch = curl_init();
    curl_setopt($ch,CURLOPT_URL,$info['redirect_url']);  
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);  
    curl_setopt($ch,CURLOPT_COOKIEFILE, $cookie_file);  
    curl_setopt($ch,CURLOPT_COOKIEJAR,$cookie_file);  
    curl_exec($ch);
    curl_close($ch);
    return $info['redirect_url'];
  }
  function loginPost($url,$data){
    global $cookie_file ;
    //echo $cookie_file ;exit;
    $tmp = '';
    if(is_array($data)){
        foreach($data as $key =>$value){
            $tmp .= $key."=".$value."&";
        }
        $post = trim($tmp,"&");
    }else{
        $post = $data;
    }
    $ch = curl_init();
    curl_setopt($ch,CURLOPT_URL,$url);  
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);  
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);    
    curl_setopt($ch,CURLOPT_POST,1);
    curl_setopt($ch,CURLOPT_POSTFIELDS,$post);
    curl_setopt($ch,CURLOPT_COOKIEJAR,$cookie_file);
    curl_setopt($ch,CURLOPT_COOKIEJAR,$cookie_file);
    $return = curl_exec($ch);
    $info = curl_getinfo($ch);
    curl_close($ch);
    return $return;
  }
  function post($url,$data){
    global $cookie_file;
    $tmp = '';
    if(is_array($data)){
        foreach($data as $key =>$value){
            $tmp .= $key."=".$value."&";
        }
        $post = trim($tmp,"&");
    }else{
        $post = $data;
    }
    $ch = curl_init();
    curl_setopt($ch,CURLOPT_URL,$url);  
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);      
    curl_setopt($ch,CURLOPT_POST,1);
    curl_setopt($ch,CURLOPT_COOKIEFILE, $cookie_file);
    curl_setopt($ch,CURLOPT_POSTFIELDS,$post);
    $return = curl_exec($ch);
    $info = curl_getinfo($ch);
    curl_close($ch);
    return $return;
  }
  function get($url,$getInfo=false){
      global $cookie_file;  
      $ch = curl_init();
      curl_setopt($ch,CURLOPT_URL,$url);  
      curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);  
      curl_setopt($ch,CURLOPT_COOKIEFILE, $cookie_file);  
      curl_setopt($ch,CURLOPT_COOKIEJAR,$cookie_file);  
      curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
      curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);      
      $return = curl_exec($ch);
      $info = curl_getinfo($ch);
      if($getInfo)return $info;
      curl_close($ch);
      return $return;
  }
  function mp(){
    $getRndCode = "http://login.sina.com.cn/sso/prelogin.php?entry=weibo&callback=sinaSSOController.preloginCallBack&su=&rsakt=mod&client=ssologin.js(v1.4.15)&_=1403081692608";
    @preg_match_all('/\((.*?)\)/is',get($getRndCode,$data),$data);
    $encryption = json_decode($data[1][0],true);
    return $encryption;
  }

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
mysql中存储过程、函数的一些问题
Feb 14 PHP
基于xcache的配置与使用详解
Jun 18 PHP
解析yii数据库的增删查改
Jun 20 PHP
php实现文件下载功能的几个代码分享
May 10 PHP
php实现随机生成易于记忆的密码
Jun 19 PHP
Yii框架防止sql注入,xss攻击与csrf攻击的方法
Oct 18 PHP
PHP中file_put_contents追加和换行的实现方法
Apr 01 PHP
Ubuntu 16.04中Laravel5.4升级到5.6的步骤
Dec 07 PHP
PHP实现一个轻量级容器的方法
Jan 28 PHP
ThinkPHP5&amp;5.1框架关联模型分页操作示例
Aug 03 PHP
Laravel框架源码解析之入口文件原理分析
May 14 PHP
微信小程序和php的登录实现
Apr 01 PHP
PHP连续签到功能实现方法详解
Dec 04 #PHP
Laravel框架Eloquent ORM修改数据操作示例
Dec 03 #PHP
Laravel框架Eloquent ORM删除数据操作示例
Dec 03 #PHP
Laravel框架基础语法与知识点整理【模板变量、输出、include引入子视图等】
Dec 03 #PHP
Laravel框架Blade模板简介及模板继承用法分析
Dec 03 #PHP
在phpstudy集成环境下的nginx服务器下配置url重写
Dec 02 #PHP
php 实现简单的登录功能示例【基于thinkPHP框架】
Dec 02 #PHP
You might like
PHP 和 XML: 使用expat函数(二)
2006/10/09 PHP
献给php初学者(入门学习经验谈)
2010/10/12 PHP
WordPress的主题编写中获取头部模板和底部模板
2015/12/28 PHP
php的debug相关函数用法示例
2016/07/11 PHP
php微信公众账号开发之前五个坑(一)
2016/09/18 PHP
ThinkPHP 模板substr的截取字符串函数详解
2017/01/09 PHP
PHP实现在对象之外访问其私有属性private及保护属性protected的方法
2017/11/20 PHP
PHP设计模式之工厂方法设计模式实例分析
2018/04/25 PHP
jQuery 选择器、DOM操作、事件、动画
2010/11/25 Javascript
jquery foreach使用示例
2013/09/12 Javascript
JavaScript开发人员的10个关键习惯小结
2014/12/05 Javascript
Three.js学习之几何形状
2016/08/01 Javascript
原生JS实现网络彩票投注效果
2016/09/25 Javascript
手机端实现Bootstrap简单图片轮播效果
2016/10/13 Javascript
使用Bootstrap + Vue.js实现添加删除数据示例
2017/02/27 Javascript
Vuex 入门教程
2018/01/10 Javascript
详解Vue单元测试case写法
2018/05/24 Javascript
详解vuex commit保存数据技巧
2018/12/25 Javascript
vue-cli构建vue项目的步骤详解
2019/01/27 Javascript
python 默认参数问题的陷阱
2016/02/29 Python
实例讲解Python中函数的调用与定义
2016/03/14 Python
Python 基础知识之字符串处理
2017/01/06 Python
Python实现统计代码行的方法分析
2017/07/12 Python
好的Python培训机构应该具备哪些条件
2018/05/23 Python
Python实现的读取文件内容并写入其他文件操作示例
2019/04/09 Python
pytorch实现focal loss的两种方式小结
2020/01/02 Python
详解python中groupby函数通俗易懂
2020/05/14 Python
Python分析微信好友性别比例和省份城市分布比例的方法示例【基于itchat模块】
2020/05/29 Python
使用python修改文件并立即写回到原始位置操作(inplace读写)
2020/06/28 Python
Happy Plugs官网:瑞典无线耳机品牌
2020/07/16 全球购物
公司募捐倡议书
2014/05/14 职场文书
2014教师教育实践活动对照检查材料思想汇报
2014/09/21 职场文书
旷课检讨书范文
2014/10/30 职场文书
邀请函模板
2015/02/02 职场文书
司机岗位职责范本
2015/04/10 职场文书
JAVA API 实用类 String详解
2021/10/05 Java/Android