寒窗轩,寒川的个人网络博客,记录互联网事,学习网络编程、分享工作经验、人生感悟,包括但不限于程序代码、数据库、Office办公、随笔等内容。

封装一个php发QQ微博的类。

QQ微博API至今未发布,昨几天在给EMLOG写QQ微博插件插件的时候搞定QQ微博,今天封装一个php发QQ微博的类,相当于一个简单的QQ微博API功能。大致原理简单的说来就是用CURL库模拟登陆发表微博。废话不多说,直接上菜: 

<?php
/*
用法:
$qq = new qq();
$qq->publish('xieyanwei','password','Hi, I\'m a PHPer.');
*/
class qq
{
  function publish($username, $password, $content='')
  {
    $qq = trim($username);
    $pwd = $this->md5_3(trim($password));
    $cookie_jar = $this->login($qq, $pwd);
    $url = 'http://t.qq.com/publish.php' ;
    $fields = array(
      'content'=>urlencode($content),
      'pic'=>urlencode(''),
    'countType'=>urlencode(''),
    'viewModel'=>urlencode('1')
    );
    $fields_string = '';
    foreach($fields as $key=>$value)
    {
      $fields_string .= $key.'='.$value.'&amp;' ;
     }
    rtrim($fields_string ,'&amp;') ;
    $fields_string = substr($fields_string, 0,-5);
    $referURL = 'http://t.qq.com/'.$qq;
    $curl = curl_init($url) ;
    curl_setopt($curl, CURLOPT_POST,count($fields)) ;
    curl_setopt($curl, CURLOPT_POSTFIELDS,$fields_string) ;
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie_jar);
    curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie_jar);
    curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie_jar);
    curl_setopt($curl, CURLOPT_REFERER, $referURL);
    curl_exec($curl) ;
    curl_close($curl) ;
    unlink($cookie_jar);
  }

private  function login($username, $password)
  {
    $qq = trim($username);
    $pwd = trim($password);
    $verifyURL = 'http://ptlogin2.qq.com/check?uin=@'.$qq.'&appid=46000101';
    $loginURL = 'http://ptlogin2.qq.com/login?';
    $curl = curl_init($verifyURL);
    $cookie_jar = tempnam('.', 'cookie');
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie_jar);
    $verifyCode = curl_exec($curl);
    curl_close($curl);
    $verifyCode = strtoupper(substr($verifyCode, 18, 4));
    $loginURL .= 'u=@'.$qq.'&p='.md5($pwd.$verifyCode).'&verifycode='.$verifyCode.'&aid=46000101&u1=http%3A%2F%2Ft.qq.com&h=1&from_ui=1&fp=loginerroralert';
    $curl = curl_init($loginURL);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie_jar);
    curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie_jar);
    curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie_jar);
    curl_exec($curl);
    curl_close($curl);
    return $cookie_jar;
  }

private  function md5_3($str)
  {
    return strtoupper(md5(md5(md5($str,true),true)));
  }
}
?>

文章写得不错?我是土豪我要在线打赏!
在线打赏

昵称:

验证码:验证码

评论:

文章分类
系统
程序
数据
Office
随笔
热门文章
请不要奇怪,为什么最近博客的文章是几年前的内容
Excel动态引用各表格指定单元格数据
开篇第一章
ubuntu24.04无法安装向日葵,提示依赖libgconf-2-4怎么办?
如何利用python修改文件的创建时间,修改时间,访问时间
发现一个好网站——春燕文档
ubuntu24.04安装网易云音乐
Ubuntu22.04中用thunar替换默认文件管理器,提示无法启动“TerminalEmulator“的首选应用程序
MySQL如何按每个分类查询10条数据,即MySQL如何每个分类查询10条数据
python读取旧的Excel文件的数据到新的Excel表中
文章推荐
免责声明
关于博主
开篇第一章
随机推荐
win10华硕fl5900u笔记本开机进入桌面后转圈卡死怎么办
WAP写博客测试
php实现多个域名指向同一网站的301转向
MeeGo系统手机横空出世了。。。
购得的蓝牙匹配器到手
网站模板调试,本地浏览正常,但上传后在IE6中是乱的
php遍历文件夹读取文件夹中图片并分页显示图片
终于下雨了
暂时屏蔽博客的评论功能
宝宝日志-待产观察第一天
友情连接
春燕网络
谢润的博客