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 相关文章推荐
NT IIS下用ODBC连接数据库
Oct 09 PHP
PHP中的日期处理方法集锦
Jan 02 PHP
php面向对象的方法重载两种版本比较
Sep 08 PHP
PHP syntax error, unexpected $end 错误的一种原因及解决
Oct 25 PHP
第四章 php数学运算
Dec 30 PHP
PHP容易忘记的知识点分享
Apr 30 PHP
PHP使用GETDATE获取当前日期时间作为一个关联数组的方法
Mar 19 PHP
yii2框架中使用下拉菜单的自动搜索yii-widget-select2实例分析
Jan 09 PHP
php 解析xml 的四种方法详细介绍
Oct 26 PHP
浅谈PHP的反射API
Feb 26 PHP
php smtp实现发送邮件功能
Jun 22 PHP
php apache开启跨域模式过程详解
Jul 08 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 存取 MySQL 数据库的一个例子
2006/10/09 PHP
dedecms后台验证码总提示错误的解决方法
2007/03/21 PHP
用php实现百度网盘图片直链的代码分享
2012/11/01 PHP
详解PHP内置访问资源的超时时间 time_out file_get_contents read_file
2013/06/03 PHP
thinkPHP分页功能实例详解
2017/05/05 PHP
thinkphp5框架实现数据库读取的数据转换成json格式示例
2019/10/10 PHP
Javascript - HTML的request类
2007/01/09 Javascript
通过jQuery打造支持汉字,拼音,英文快速定位查询的超级select插件
2010/06/18 Javascript
juqery 学习之三 选择器 可见性 元素属性
2010/11/25 Javascript
javascript控制swfObject应用介绍
2012/11/29 Javascript
jQuery javaScript捕获回车事件(示例代码)
2013/11/07 Javascript
jquery form 加载数据示例
2014/04/21 Javascript
搭建pomelo 开发环境
2014/06/24 Javascript
JavaScript中的闭包介绍
2015/03/15 Javascript
JS实现简单的点赞与踩功能示例
2018/12/05 Javascript
利用Angular2的Observables实现交互控制的方法
2018/12/27 Javascript
vue实现节点增删改功能
2019/09/26 Javascript
Python中利用函数装饰器实现备忘功能
2015/03/30 Python
python实现可以断点续传和并发的ftp程序
2016/09/13 Python
windows下安装python的C扩展编译环境(解决Unable to find vcvarsall.bat)
2018/02/21 Python
python3中zip()函数使用详解
2018/06/29 Python
python中ImageTk.PhotoImage()不显示图片却不报错问题解决
2018/12/06 Python
在python中将字符串转为json对象并取值的方法
2018/12/31 Python
python中tkinter窗口位置\坐标\大小等实现示例
2020/07/09 Python
使用Python画了一棵圣诞树的实例代码
2020/11/27 Python
Python实现淘宝秒杀功能的示例代码
2021/01/19 Python
美国最受欢迎的度假租赁网站:VRBO
2016/08/02 全球购物
好莱坞百老汇御用王牌美妆:Koh Gen Do 江原道
2018/04/03 全球购物
土木工程个人自荐信范文
2013/11/30 职场文书
公司财务流程之主管工作流程
2014/03/03 职场文书
协议书与合同的区别
2014/04/18 职场文书
党员干部一句话承诺
2014/05/30 职场文书
高中诗歌鉴赏教学反思
2016/02/16 职场文书
Vue图片裁剪组件实例代码
2021/07/02 Vue.js
浅谈Python3中datetime不同时区转换介绍与踩坑
2021/08/02 Python
Redis基本数据类型String常用操作命令
2022/06/01 Redis