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

本文实例讲述了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 curl用法总结》、《PHP网络编程技巧总结》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《PHP数据结构与算法教程》及《PHP中json格式数据操作技巧汇总》

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

(0)

相关推荐

  • redis+php实现微博(三)微博列表功能详解

    本文实例讲述了redis+php实现微博列表功能.分享给大家供大家参考,具体如下: 个人主页显示微博列表(自己及关注人的微博列表) /*获取最新的50微博信息列表,列出自己发布的微博及我关注用户的微博 *1.根据推送的信息获取postid *2.根据postid获取发送的信息 */ $r->ltrim("recivepost:".$user['userid'],0,49); $postid_arr = $r->sort("recivepost:".$us

  • PHP+redis实现微博的推模型案例分析

    本文实例讲述了PHP+redis实现微博的推模型.分享给大家供大家参考,具体如下: 最近在看了一下关于redis的内容,然后利用redis写了一个简单的微博项目,这篇文章是关于推模型的. 推模型 所谓推模型,就是用户在发布微博的时候会将微博推送给关注者和自己,然后其他关注者登录之后就可以看到发布的微博. 微博项目数据结构设计 user表设计 注册的时候将user数据写入redis中,key如下: user数据的key 用户名=user:uesrid:$uesrid:username 密码=use

  • php获取新浪微博数据API实例

    <?phpfunction getWeiboData(){ $count = 15; // 参数source后面输入你的授权号 $url = "https://api.weibo.com/2/statuses/home_timeline.json?source=123456789&count=".$count."&page=1"; echo $url.'<br />'; $curl = curl_init(); curl_setop

  • PHP CURL模拟登录新浪微博抓取页面内容 基于EaglePHP框架开发

    复制代码 代码如下: /** * CURL请求 * @param String $url 请求地址 * @param Array $data 请求数据 */ function curlRequest($url,$data='',$cookieFile=''){ $ch = curl_init(); $option = array( CURLOPT_URL => $url, CURLOPT_HEADER =>0, CURLOPT_RETURNTRANSFER => 1, ); if($co

  • php利用curl抓取新浪微博内容示例

    很多人都喜欢在网站上DIY自己的微博,所以我也写了一个.这里直接抓取了新浪微博工具中的微博秀地址. 复制代码 代码如下: <?php  set_time_limit(0);  $url="http://widget.weibo.com/weiboshow/index.php?language=&width=0&height=550&fansRow=2&ptype=1&speed=0&skin=1&isTitle=1&nobor

  • PHP采用curl模仿用户登陆新浪微博发微博的方法

    本文实例讲述了PHP采用curl模仿用户登陆新浪微博发微博的方法.分享给大家供大家参考.具体实现方法如下: 现在用php做模仿用户登录我们都会使用到PHP curl函数了,因为只有它才可以实现像用户一样的去访问别人网站了,下面就给大家介绍一下curl登陆新浪微博发微博应用例子. 前天接到一个需求需要模拟登陆微博然后进行发微博,以前干过很多的模拟登录阿里妈妈,微信,还有些其他的内部系统,至今没有出现不能登录的,哈哈,所以也就没有当一回事情,可是当分析新浪的登陆过程的时候才感觉到压力 遇到sha1(

  • php新浪微博登录接口用法实例

    本文实例讲述了php新浪微博登录接口用法.分享给大家供大家参考.具体分析如下: 在做微博登陆之前是需要申请到APP KEY 和App Secret,这个的申请方式请去 open.weibo.com 申请相关内容. 在官网也有相关的开发文档http://open.weibo.com/wiki/可以查看相关资料,我这里下载的php的SDK直接进行的web网站应用. 下载SDK,配置好config文件,代码如下: 复制代码 代码如下: <?php header('Content-Type: text/

  • redis+php实现微博(二)发布与关注功能详解

    本文实例讲述了redis+php实现微博发布与关注功能.分享给大家供大家参考,具体如下: 数据结构: set post:postid:3:time timestamp set post:postid:3:userid 5 set post:postid:3:content 测试发布哈哈哈哈 incr global:postid set post:postid:$postidcho "用户名密码不能够为空!"; 关注微博 following:3 被关注(粉丝) followed:3 把发

  • redis+php实现微博(一)注册与登录功能详解

    本文实例讲述了redis+php实现微博注册与登录功能.分享给大家供大家参考,具体如下: (一).微博功能概况 微博用户账号注册 微博用户登录 微博发布 添加微博好友(粉丝) 微博推送 微博冷数据写入mysql数据库 (二).redis数据结构设计 这节分享微博用户注册与登录: 我们完全采用redis作为数据库来实现注册于登录 先来看一下redis数据结构的设计: 注册用户表:user set global:userid set user:userid:1:username zhangshan

  • PHP Curl模拟登录微信公众平台、新浪微博实例代码

    使用curl之前先打开curl配置,具体方式百度一下就知道,开启curl扩展.密码用md5加密,这是经过测试成功的,把用户跟密码改成你的就行了. 下面一段代码给大家介绍php使用curl模拟登录微信公众平台,具体代码如下所示: <?php //模拟微信登入 $cookie_file = tempnam('./temp','cookie'); $login_url = 'https://mp.weixin.qq.com/cgi-bin/login'; $pwd = md5("********

  • 新浪微博API开发简介之用户授权(PHP基础篇)

    现在玩微博的人越来越多了,而关于微博的第三方应用开发也越来越多,自己在偶然间开始接触了新浪微博API开发,新浪微博API开发的资源比较多,新浪微博提供了一个开发者的平台,网址是:http://open.weibo.com,它里面有很全面的新浪微博开发的资料,包括开发者的使用和介绍,各种语言的API函数介绍文档,SDK等多种资料. 自己在开发和学习的过程中,感觉虽然没有太大难度,但还是有一些问题是需要我们注意的,今天就我在开发和学习的过程中,简单的对利用PHP进行新浪微博API开发的内容进行一个整

随机推荐