php教程

超轻量级php框架startmvc

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

更新时间:2020-04-14 00:02:26 作者:startmvc
本文实例讲述了PHP实现发送微博消息功能。分享给大家供大家参考,具体如下:<?php$co

本文实例讲述了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 发送微博消息