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 相关文章推荐
模拟xcopy的函数
Oct 09 PHP
用PHP实现Ftp用户的在线管理的代码
Mar 06 PHP
mysql时区问题
Mar 26 PHP
php $_SERVER[&quot;REQUEST_URI&quot;]获取值的通用解决方法
Jun 21 PHP
Apache 配置详解(最好的APACHE配置教程)
Jul 04 PHP
PHP四舍五入精确小数位及取整
Jan 14 PHP
PHP快速按行读取CSV大文件的封装类分享(也适用于其它超大文本文件)
Apr 10 PHP
phpinfo() 中 Local Value(局部变量)Master Value(主变量) 的区别
Feb 03 PHP
php 如何禁用eval() 函数实例详解
Dec 01 PHP
PHP新特性之字节码缓存和内置服务器
Aug 11 PHP
PHP文件管理之实现网盘及压缩包的功能操作
Sep 20 PHP
TP5框架实现自定义分页样式的方法示例
Apr 05 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 URL验证正则表达式
2011/07/19 PHP
php中对象引用和复制实例分析
2019/08/14 PHP
浅析PHP反序列化中过滤函数使用不当导致的对象注入问题
2020/02/15 PHP
extJs 常用到的增,删,改,查操作代码
2009/12/28 Javascript
关于JavaScript与HTML的交互事件
2013/04/12 Javascript
jQuery内部原理和实现方式浅析
2015/02/03 Javascript
jquery表单对象属性过滤选择器实例分析
2015/05/18 Javascript
javascript弹出拖动窗口
2015/08/11 Javascript
详细解读JavaScript的跨浏览器事件处理
2015/08/12 Javascript
js动态添加的DIV中的onclick事件简单实例
2016/07/25 Javascript
JavaScript用JSONP跨域请求数据实例详解
2017/01/06 Javascript
微信小程序 PHP后端form表单提交实例详解
2017/01/12 Javascript
vue-cli axios请求方式及跨域处理问题
2018/03/28 Javascript
JQuery判断radio单选框是否选中并获取值的方法
2019/01/17 jQuery
javascript json字符串到json对象转义问题
2019/01/22 Javascript
js实现一个页面多个倒计时的3种方法
2019/02/25 Javascript
「中高级前端面试」JavaScript手写代码无敌秘籍(推荐)
2019/04/08 Javascript
小程序实现搜索框
2020/06/19 Javascript
jQuery 常用特效实例小结【显示与隐藏、淡入淡出、滑动、动画等】
2020/05/19 jQuery
微信小程序swiper组件实现抖音翻页切换视频功能的实例代码
2020/06/24 Javascript
SpringBoot+Vue 前后端合并部署的配置方法
2020/12/30 Vue.js
vue自定义组件实现双向绑定
2021/01/13 Vue.js
[02:58]献给西雅图的情书_高清
2014/05/29 DOTA
python Django模板的使用方法(图文)
2013/11/04 Python
基于进程内通讯的python聊天室实现方法
2015/06/28 Python
Python中return语句用法实例分析
2015/08/04 Python
Python对象类型及其运算方法(详解)
2017/07/05 Python
解决pandas read_csv 读取中文列标题文件报错的问题
2018/06/15 Python
python登录WeChat 实现自动回复实例详解
2019/05/28 Python
对python 树状嵌套结构的实现思路详解
2019/08/09 Python
如何用python写个模板引擎
2021/01/14 Python
浅析css3中matrix函数的使用
2016/06/06 HTML / CSS
瑞士国际航空官网:SWISS
2016/07/21 全球购物
音乐之声音乐广播稿
2014/09/10 职场文书
居委会工作总结2015
2015/05/18 职场文书
iPhone13再次曝光
2021/04/15 数码科技