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 相关文章推荐
dede3.1分页文字采集过滤规则详说(图文教程)
Apr 03 PHP
php仿discuz分页效果代码
Oct 02 PHP
用PHP实现读取和编写XML DOM代码
Apr 07 PHP
破解.net程序(dll文件)编译和反编译方法
Jan 31 PHP
php mb_substr()函数截取中文字符串应用示例
Jul 29 PHP
跟我学Laravel之请求(Request)的生命周期
Oct 15 PHP
php封装的验证码类分享
Feb 26 PHP
Ubuntu上安装yaf扩展的方法
Jan 29 PHP
PHP simplexml_import_dom()函数讲解
Feb 03 PHP
使用ucenter实现多站点同步登录的讲解
Mar 21 PHP
PHP容器类的两种实现方式示例
Jul 24 PHP
WordPress多语言翻译插件 - WPML使用教程
Apr 01 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 split汉字
2009/06/05 PHP
在Mac OS上编译安装Nginx+PHP+MariaDB开发环境的教程
2016/02/23 PHP
ThinkPHP路由机制简介
2016/03/23 PHP
分享一个漂亮的php验证码类
2016/09/29 PHP
PHP面向对象类型约束用法分析
2019/06/12 PHP
通过JS获取用户本地图片路径并显示的代码
2012/02/16 Javascript
jquery1.9 下检测浏览器类型和版本的方法
2013/12/26 Javascript
node.js中实现同步操作的3种实现方法
2014/12/05 Javascript
jQuery选择器源码解读(三):tokenize方法
2015/03/31 Javascript
JavaScript检测字符串中是否含有html标签实现方法
2015/07/01 Javascript
JavaScript简单实现弹出拖拽窗口(一)
2016/06/17 Javascript
jquery实用技巧之输入框提示语句
2016/07/28 Javascript
JS实现图片延迟加载并淡入淡出效果的简单方法
2016/08/25 Javascript
Angular实现的自定义模糊查询、排序及三角箭头标注功能示例
2017/12/28 Javascript
不使用JavaScript实现菜单的打开和关闭效果demo
2018/05/01 Javascript
浅谈Vue render函数在ElementUi中的应用
2018/09/06 Javascript
Vue从TodoList中学父子组件通信
2019/02/05 Javascript
更优雅的微信小程序骨架屏实现详解
2019/08/07 Javascript
小程序实现上下移动切换位置
2019/09/23 Javascript
[10:04]国际邀请赛采访专栏:DK.Farseer,mouz.Black^,采访员Josh专访
2013/08/05 DOTA
[01:04:14]OG vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
Python CSV模块使用实例
2015/04/09 Python
python 去除二维数组/二维列表中的重复行方法
2019/01/23 Python
Django调用支付宝接口代码实例详解
2020/04/04 Python
Python编写单元测试代码实例
2020/09/10 Python
美国在线轮胎零售商:SimpleTire
2019/04/08 全球购物
信息专业大学生自我评价分享
2014/01/17 职场文书
高中生期末评语大全
2014/01/28 职场文书
小学学校评估方案
2014/06/08 职场文书
2015年效能监察工作总结
2015/04/23 职场文书
污水处理保证书
2015/05/09 职场文书
远程教育学习心得体会
2016/01/23 职场文书
合作合同协议书
2016/03/21 职场文书
详解python中[-1]、[:-1]、[::-1]、[n::-1]使用方法
2021/04/25 Python
Python快速优雅的批量修改Word文档样式
2021/05/20 Python
「女孩的钓鱼慢活」全新版权绘公布
2022/03/21 日漫