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一些常用的正则表达式字符的一些转换
Jul 29 PHP
PHP 文件类型判断代码
Mar 13 PHP
PHP实现域名whois查询的代码(数据源万网、新网)
Feb 22 PHP
PHP动态分页函数,PHP开发分页必备啦
Nov 07 PHP
php数组索引的Key加引号和不加引号的区别
Aug 19 PHP
destoon切换城市后实现logo旁边显示地区名称的方法
Aug 21 PHP
ThinkPHP 3.2 数据分页代码分享
Oct 14 PHP
php批量添加数据与批量更新数据的实现方法
Dec 16 PHP
PHP用户管理中常用接口调用实例及解析(含源码)
Mar 09 PHP
PHP如何获取当前主机、域名、网址、路径、端口等参数
Jun 09 PHP
浅谈ThinkPHP5.0版本和ThinkPHP3.2版本的区别
Jun 17 PHP
PHP chunk_split()函数讲解
Feb 12 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垃圾回收机制简单说明
2010/07/22 PHP
PHP根据IP判断地区名信息的示例代码
2014/03/03 PHP
Zend Framework框架之Zend_Mail实现发送Email邮件验证功能及解决标题乱码的方法
2016/03/21 PHP
页面加载完成后再执行JS的jquery写法以及区别说明
2014/02/22 Javascript
如何防止回车(enter)键提交表单
2014/05/11 Javascript
js获取input长度并根据页面宽度设置其大小及居中对齐
2014/08/22 Javascript
JS合并数组的几种方法及优劣比较
2014/09/19 Javascript
javascript动态创建表格及添加数据实例详解
2015/05/13 Javascript
PHP+jQuery+Ajax+Mysql如何实现发表心情功能
2015/08/06 Javascript
jQuery的ajax中使用FormData实现页面无刷新上传功能
2017/01/16 Javascript
JS实现手写parseInt的方法示例
2017/09/24 Javascript
node之本地服务器图片上传的方法示例
2019/03/26 Javascript
JavaScript实现单点登录的示例
2020/09/23 Javascript
[02:47]2018年度DOTA2最佳辅助位选手4号位-完美盛典
2018/12/17 DOTA
压缩包密码破解示例分享(类似典破解)
2014/01/17 Python
Python实现的检测web服务器健康状况的小程序
2014/09/17 Python
Python多线程和队列操作实例
2015/06/21 Python
Python环境下搭建属于自己的pip源的教程
2016/05/05 Python
浅谈Python 字符串格式化输出(format/printf)
2016/07/21 Python
Python批量更改文件名的实现方法
2017/10/29 Python
python 监听salt job状态,并任务数据推送到redis中的方法
2019/01/14 Python
python实现全盘扫描搜索功能的方法
2019/02/14 Python
pytorch中tensor.expand()和tensor.expand_as()函数详解
2019/12/27 Python
新手入门学习python Numpy基础操作
2020/03/02 Python
Python实现自动装机功能案例分析
2020/10/22 Python
利用css3-animation实现逐帧动画效果
2016/03/10 HTML / CSS
基于Html5 canvas实现裁剪图片和马赛克功能及又拍云上传图片 功能
2019/07/09 HTML / CSS
水电站项目建议书
2014/05/12 职场文书
关于安全的标语
2014/06/10 职场文书
党员干部群众路线个人整改措施
2014/09/18 职场文书
鲁迅故居导游词
2015/02/05 职场文书
2015中秋节慰问信范文
2015/03/23 职场文书
2015年小学语文教师工作总结
2015/10/23 职场文书
css3实现背景图片颜色修改的多种方式
2021/04/13 HTML / CSS
你需要掌握的20个Python常用技巧
2022/02/28 Python
Vue.js中v-for指令的用法介绍
2022/03/13 Vue.js