帝国CMS模板大全
www.admin99.cn
www.92cms.cn 帝国CMS模板下载站!,情怀,养站,二次开发!源码需求比较大的一站式会员下载,价更省!!!

php 获取qq用户昵称和在线状态实例 - php高级应用

php 获取qq用户昵称和在线状态实例

如果我们利用php获取QQ用户名与在线状态QQ并未给我们提供api接口了,如果要获取我们可以通过QQ空间或QQ网页版聊天来实现。

QQ通过返回不同的图片,来表示在线或离线,图标也随之变换,既然图片不同,那么,返回的HTTP头信息中的Content-Length 也一定不同,而且,彩色图片一定会比同样子的暗色图片要大,于是,找出某个样式的彩色与暗色图片的中间值,就能达到通过判断头部返回长度的方法来获取QQ在线状态,以下是代码:

<?php 
function  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 ; 
}

赞(0)
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《php 获取qq用户昵称和在线状态实例 - php高级应用》
文章链接:https://www.admin99.cn/4489
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
QQ站长交流群:953950264

登录

找回密码

注册