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调用三种数据库的方法(2)
Oct 09 PHP
20个PHP常用类库小结
Sep 11 PHP
使用php判断服务器是否支持Gzip压缩功能
Sep 24 PHP
php指定函数参数默认值示例代码
Dec 04 PHP
使用gd库实现php服务端图片裁剪和生成缩略图功能分享
Dec 25 PHP
PHP 5.3新增魔术方法__invoke概述
Jul 23 PHP
CodeIgniter框架URL路由总结
Sep 03 PHP
分享十款最出色的PHP安全开发库中文详细介绍
Mar 22 PHP
PHP递归实现快速排序的方法示例
Dec 18 PHP
PHP如何搭建百度Ueditor富文本编辑器
Sep 21 PHP
php实现二叉树中和为某一值的路径方法
Oct 14 PHP
laravel框架使用FormRequest进行表单验证,验证异常返回JSON操作示例
Feb 18 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生成WAP页面
2006/10/09 PHP
MySQL相关说明
2007/01/15 PHP
CentOS 6.3下安装PHP xcache扩展模块笔记
2014/09/10 PHP
Zend Framework过滤器Zend_Filter用法详解
2016/12/09 PHP
ThinkPHP Where 条件中常用表达式示例(详解)
2017/03/31 PHP
PHP PDOStatement::execute讲解
2019/01/31 PHP
QQ邮箱的一个文本编辑器代码
2007/03/14 Javascript
JS仿flash上传头像效果实现代码
2011/07/18 Javascript
jquery如何判断表格同一列不同行input数据是否重复
2014/05/14 Javascript
基于CSS3和jQuery实现跟随鼠标方位的Hover特效
2016/07/25 Javascript
Windows环境下npm install 报错: operation not permitted, rename的解决方法
2016/09/26 Javascript
SelecT下拉框选中和取值的解决方法
2016/11/22 Javascript
详解vue父子模版嵌套案例
2017/03/04 Javascript
BootStrap 表单控件之单选按钮水平排列
2017/05/23 Javascript
AngularJS 的$timeout服务示例代码
2017/09/21 Javascript
JS实现动态生成html table表格的方法分析
2018/07/11 Javascript
Vue.js 实现数据展示全部和收起功能
2018/09/05 Javascript
vue使用exif获取图片经纬度的示例代码
2020/12/11 Vue.js
从零学Python之入门(二)基本数据类型
2014/05/25 Python
使用 Python 获取 Linux 系统信息的代码
2014/07/13 Python
python数据类型_字符串常用操作(详解)
2017/05/30 Python
Python实现读取txt文件并画三维图简单代码示例
2017/12/09 Python
python爬取王者荣耀全皮肤的简单实现代码
2020/01/31 Python
通过Turtle库在Python中绘制一个鼠年福鼠
2020/02/03 Python
基于python3.7利用Motor来异步读写Mongodb提高效率(推荐)
2020/04/29 Python
Python实现转换图片背景颜色代码
2020/04/30 Python
基于Python爬取素材网站音频文件
2020/10/21 Python
html5标记文字_动力节点Java学院整理
2017/07/11 HTML / CSS
HTML5 移动页面自适应手机屏幕四类方法总结
2017/08/17 HTML / CSS
Java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类
2012/02/06 面试题
违反课堂纪律检讨书
2014/01/19 职场文书
会计岗位说明书
2014/07/29 职场文书
党员自我评议对照检查材料
2014/09/27 职场文书
食品仓管员岗位职责
2015/04/01 职场文书
焦裕禄纪念馆观后感
2015/06/09 职场文书
电脑只能进入安全模式无法正常启动的解决办法
2022/04/08 数码科技