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 相关文章推荐
常用的php对象类型判断
Aug 27 PHP
Ping服务的php实现方法,让网站快速被收录
Feb 04 PHP
ThinkPHP实现非标准名称数据表快速创建模型的方法
Nov 29 PHP
php基于socket实现SMTP发送邮件的方法
Mar 05 PHP
php删除指定目录的方法
Apr 03 PHP
PHP实现仿百度文库,豆丁在线文档效果(word,excel,ppt转flash)
Mar 10 PHP
PHP实现的简单分页类及用法示例
May 06 PHP
Thinkphp 中 distinct 的用法解析
Dec 14 PHP
PHP PDO操作MySQL基础教程
Jun 05 PHP
php7安装yar扩展的方法详解
Aug 03 PHP
PHP7.1实现的AES与RSA加密操作示例
Jun 15 PHP
详解json在php中的应用
Sep 30 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高级应用技巧果断收藏
2015/09/25 PHP
php is_executable判断给定文件名是否可执行实例
2016/09/26 PHP
pjblog修改技巧汇总
2007/03/12 Javascript
Jquery replace 字符替换实现代码
2010/12/02 Javascript
js获取TreeView控件选中节点的Text和Value值的方法
2012/11/24 Javascript
js获取网页高度(详细整理)
2012/12/28 Javascript
解决JS无法调用Controller问题的方法
2015/12/31 Javascript
关于动态执行代码(js的Eval)实例详解
2016/08/15 Javascript
微信小程序实现动态改变view标签宽度和高度的方法【附demo源码下载】
2017/12/05 Javascript
webpack打包并将文件加载到指定的位置方法
2018/02/22 Javascript
vue-cli 3 全局过滤器的实例代码详解
2019/06/03 Javascript
微信小程序防止多次点击跳转和防止表单组件输入内容多次验证功能(函数防抖)
2019/09/19 Javascript
VueJS实现用户管理系统
2020/05/29 Javascript
JavaScript Event Loop相关原理解析
2020/06/10 Javascript
微信小程序实现可拖动悬浮图标(包括按钮角标的实现)
2020/12/29 Javascript
[51:29]Alliance vs TNC 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
利用Python实现颜色色值转换的小工具
2016/10/27 Python
Python生成8位随机字符串的方法分析
2017/12/05 Python
利用python解决mysql视图导入导出依赖的问题
2017/12/17 Python
python3.6 +tkinter GUI编程 实现界面化的文本处理工具(推荐)
2017/12/20 Python
python实现简易云音乐播放器
2018/01/04 Python
查看TensorFlow checkpoint文件中的变量名和对应值方法
2018/06/14 Python
OpenCV里的imshow()和Matplotlib.pyplot的imshow()的实现
2019/11/25 Python
python 链接sqlserver 写接口实例
2020/03/11 Python
Python使用xlrd实现读取合并单元格
2020/07/09 Python
CSS3制作苹果风格键盘特效
2015/02/26 HTML / CSS
世界上最全面的草药补充剂和顶级品牌维生素网站:HerbsPro
2019/01/20 全球购物
英国最大的独立玩具专卖店:The Entertainer
2019/09/06 全球购物
Timberland俄罗斯官方网上商店:全球领先的户外品牌
2020/03/15 全球购物
初级Java程序员面试题
2016/03/03 面试题
Ruby如何实现动态方法调用
2012/11/18 面试题
违纪检讨书2000字
2014/02/08 职场文书
写得不错的求职信范文
2014/07/11 职场文书
乡镇镇长个人整改措施
2014/10/01 职场文书
公证书格式
2015/01/23 职场文书
公司慰问信范文
2015/03/23 职场文书