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 相关文章推荐
给apache2.2加上mod_encoding模块後 php5.2.0 处理url出现bug
Apr 12 PHP
解析PHP中如何将数组变量写入文件
Jun 06 PHP
通过PHP current函数获取未知字符键名数组第一个元素的值
Jun 24 PHP
php使用异或实现的加密解密实例
Sep 04 PHP
PHP管理依赖(dependency)关系工具 Composer 安装与使用
Aug 18 PHP
php实现压缩多个CSS与JS文件的方法
Nov 11 PHP
PHP实现的简易版图片相似度比较
Jan 07 PHP
php获取网页上所有链接的方法
Apr 03 PHP
解析WordPress中的post_class与get_post_class函数
Jan 04 PHP
PHP操作mysql数据库分表的方法
Jun 09 PHP
Yii视图CGridView列表用法实例分析
Jul 12 PHP
分析PHP中单双引号的误区和双引号小隐患
Jul 19 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
可快速识别放射性物质-国外大神教你diy一个开放式辐射探测器
2020/03/12 无线电
[原创]效率较高的php下读取文本文件的代码
2008/07/02 PHP
php ajax 静态分页过程形式
2011/09/02 PHP
PDO预处理语句PDOStatement对象使用总结
2014/11/20 PHP
php实现的美国50个州选择列表实例
2015/04/20 PHP
10个值得深思的PHP面试题
2016/11/14 PHP
详解php伪造Referer请求反盗链资源
2019/01/24 PHP
jQuery隔行变色与普通JS写法的对比
2013/04/21 Javascript
jQuery超酷平面式时钟效果代码分享
2020/03/30 Javascript
实例讲解javascript注册事件处理函数
2016/01/09 Javascript
JavaScript来实现打开链接页面的简单实例
2016/06/02 Javascript
详解使用angular-cli发布i18n多国语言Angular应用
2017/05/20 Javascript
JS实现运动缓冲效果的封装函数示例
2018/02/18 Javascript
手写Node静态资源服务器的实现方法
2018/03/20 Javascript
简单了解微信小程序 e.target与e.currentTarget的不同
2019/09/27 Javascript
JS合并两个数组的3种方法详解
2019/10/24 Javascript
使用JS监听键盘按下事件(keydown event)
2019/11/07 Javascript
[04:10]2016国际邀请赛中国区预选赛第二日TOP10精彩集锦
2016/06/28 DOTA
在Python程序中进行文件读取和写入操作的教程
2015/04/28 Python
Python3访问并下载网页内容的方法
2015/07/28 Python
Python中用字符串调用函数或方法示例代码
2017/08/04 Python
kafka-python批量发送数据的实例
2018/12/27 Python
django将数组传递给前台模板的方法
2019/08/06 Python
python求加权平均值的实例(附纯python写法)
2019/08/22 Python
为中国消费者甄选天下优品:网易严选
2016/08/11 全球购物
Missguided美国官网:英国时尚品牌
2018/01/18 全球购物
夏洛特和乔治婴儿和儿童时装精品店:Charlotte and George
2018/06/06 全球购物
管理站站长岗位职责
2013/11/27 职场文书
会计与出纳自荐书范文
2014/03/16 职场文书
优秀的个人求职信范文
2014/05/09 职场文书
法学专业毕业生自荐信
2014/06/11 职场文书
干货干货!2019最新优秀创业计划书
2019/03/21 职场文书
详解SpringBoot异常处理流程及原理
2021/06/21 Java/Android
关于python pygame游戏进行声音添加的技巧
2021/10/24 Python
Nebula Graph解决风控业务实践
2022/03/31 MySQL
Ruby处理CSV数据方法详解
2022/04/18 Ruby