php获取qq用户昵称和在线状态(实例分析)


Posted in PHP onOctober 27, 2013

QQ通过返回不同的图片,来表示在线或离线,图标也随之变换,既然图片不同,那么,返回的HTTP头信息中的Content-Length 也一定不同,而且,彩色图片一定会比同样子的暗色图片要大,于是,找出某个样式的彩色与暗色图片的中间值,就能达到通过判断头部返回长度的方法来获取QQ在线状态
以下是代码

<?phpfunction get_qq_status($uin)
{
 error_reporting(0);
 $f=file_get_contents('http://wpa.qq.com/pa?p=1:'.$uin.':4');
 if(!$f) return(true);
 foreach($http_response_header as $val)
 {
  if(strpos($val,'Content-Length')!==false)
  {
   return(intval(substr($val,16,50))>1000);
  }
 }
}
?>

上面比较简单,下面来个更好的
<? 
function tphp_qq_online( $uin ) 
{ 
    $reques  = "GET /pa?p=1:".$uin.":1 HTTP/1.1rn"; 
    $reques .= "Host: wpa.qq.comrn"; 
    $reques .= "User-Agent: PHP_QQ_SPYrnrn";     if ( !( $socket = socket_create( AF_INET, SOCK_STREAM, SOL_TCP ) ) ) return(-1); 
    if ( !( socket_connect( $socket, "wpa.qq.com", 80 ) ) ) return(-1); 
    if ( !( socket_write( $socket, $reques ) ) ) return(-1); 
    if ( !( $respon = socket_read( $socket, 1024, PHP_BINARY_READ ) ) ) return(-1);; 
    socket_close( $socket ); 
    $field = explode( "rn", $respon );  
    for ( $i=0; $i<count($field); $i++ ) { 
        if ( strncasecmp($field[$i], "Location:", 9) == 0 ) { 
            if ( strpos( $field[$i], "online") ) { 
                $ret = 1; 
            } else if ( strpos( $field[$i], "offline") ) { 
                $ret = 0; 
            } else {  
                $ret = -1; 
            } // if 
            break; 
        } // if 
    } // for 
    return( $ret ); 
} 
/* }}} */ 
 

echo tphp_qq_online( 561272831 );
?>

例,qq用户昵称和在线状态
//获取QQ状态
function getQQState($qq){
    $url ='http://wpa.qq.com/pa?p=2:'.$qq.':41&r=' . time ();
 $headInfo = get_headers($url,1);
 $length = $headInfo['Content-Length'];
 if ($length==1243) {
  return true;
 }else {
  return false;
 }
}
//获取QQ昵称
function getQQNick($qq){
 $str = file_get_contents('http://r.qzone.qq.com/cgi-bin/user/cgi_personal_card?uin='.$qq);
 $pattern = '/'.preg_quote('"nickname":"','/').'(.*?)'.preg_quote('",','/').'/i';
 preg_match ( $pattern,$str, $result );
 return $result[1];
}
//获取QQ姓名
function getQQName($qq){
 //$qqArr = include 'friendArr.php';//预先设置的
 //$username = $qqArr[$qq];
 if (!$username) {
  $username = getQQNick($qq);
 }
 return $username;
}
PHP 相关文章推荐
PHP简洁函数(PHP简单明了函数语法)
Jun 10 PHP
基于php上传图片重命名的6种解决方法的详细介绍
Apr 28 PHP
CodeIgniter框架中_remap()使用方法2例
Mar 10 PHP
PHP日期函数date格式化UNIX时间的方法
Mar 19 PHP
php页面,mysql数据库转utf-8乱码,utf-8编码问题总结
Aug 27 PHP
PHP 微信支付类 demo
Nov 30 PHP
PHP7常量数组用法分析
Sep 26 PHP
PHP中STDCLASS用法实例分析
Nov 11 PHP
php传值方式和ajax的验证功能
Mar 27 PHP
关于ThinkPhp 框架表单验证及ajax验证问题
Jul 19 PHP
Thinkphp框架使用list_to_tree 实现无限级分类列出所有节点示例
Apr 04 PHP
基于PHP实现邮箱验证激活过程详解
Oct 28 PHP
php获取数组长度的方法(有实例)
Oct 27 #PHP
使用淘宝IP库获取用户ip地理位置
Oct 27 #PHP
简单的php文件上传(实例)
Oct 27 #PHP
PHP 使用pcntl和libevent 实现Timer功能
Oct 27 #PHP
8个必备的PHP功能实例代码
Oct 27 #PHP
PHP生成Gif图片验证码
Oct 27 #PHP
php操作xml
Oct 27 #PHP
You might like
十天学会php之第三天
2006/10/09 PHP
一款简单实用的php操作mysql数据库类
2014/12/08 PHP
innerHTML,outerHTML,innerTEXT三者之间的区别
2007/01/28 Javascript
Extjs EditorGridPanel中ComboBox列的显示问题
2011/07/04 Javascript
浅谈Javascript事件处理程序的几种方式
2012/06/27 Javascript
浅析jQuery中常用的元素查找方法总结
2013/07/04 Javascript
js验证整数加保留小数点的简单实例
2013/12/02 Javascript
js 日期比较相关天数代码
2014/04/02 Javascript
完善的jquery处理机制
2016/02/21 Javascript
JS控制文本域只读或可写属性的方法
2016/06/24 Javascript
D3.js封装文本实现自动换行和旋转平移等功能
2016/10/14 Javascript
H5移动端适配 Flexible方案
2016/10/24 Javascript
如何提高Dom访问速度
2017/01/05 Javascript
jQuery实现元素的插入
2017/02/27 Javascript
Bootstrap Table快速完美搭建后台管理系统
2017/09/20 Javascript
JS实现前端缓存的方法
2017/09/21 Javascript
JavaScript实现音乐自动切换和轮播
2017/11/05 Javascript
JS实现图片旋转动画效果封装与使用示例
2018/07/09 Javascript
微信小程序非swiper组件实现的自定义伪3D轮播图效果示例
2018/12/11 Javascript
vue路由对不同界面进行传参及跳转的总结
2019/04/20 Javascript
Python日期的加减等操作的示例
2017/08/15 Python
python+matplotlib实现鼠标移动三角形高亮及索引显示
2018/01/15 Python
python 移除字符串尾部的数字方法
2018/07/17 Python
python带参数打包exe及调用方式
2019/12/21 Python
对pytorch的函数中的group参数的作用介绍
2020/02/18 Python
柯基袜:Corgi Socks
2017/01/26 全球购物
颇特女士香港官网:NET-A-PORTER香港
2021/03/08 全球购物
金蝶的一道SQL笔试题
2012/12/18 面试题
AJAX都有哪些有点和缺点
2012/11/03 面试题
中学生自我鉴定
2014/02/04 职场文书
个人银行贷款担保书
2014/04/01 职场文书
《草原的早晨》教学反思
2014/04/08 职场文书
银行先进个人总结
2015/02/15 职场文书
2015年庆祝国庆节66周年演讲稿
2015/07/30 职场文书
学生会干部任命书
2015/09/21 职场文书
python第三方网页解析器 lxml 扩展库与 xpath 的使用方法
2021/04/06 Python