php获取qq用户昵称和在线状态(实例分析)

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;
}

(0)

相关推荐

  • 无需数据库在线投票调查php代码

    这是一款由php +txt文本文件做的在线调用投票系统,无需数据库支持可以完成在线用户调查功能,具体内容如下 <html> <head> <title>在线调查程序代码</title> </head> <body> <form method="post" action="survey.php"> <p><input type="radio" va

  • PHP网上调查系统

    PHP网上调查系统    这是一个简单的投票程序,对于刚学PHP和朋友来说是一个很不错的入门程序.在这里给大家介绍一下,希望能对朋友们有所帮助. 该系统是由以下四个文件组成的:有HTML调查表单的survey.htm,实现调查功能的survey.php,记录调查项目的data.txt和记录调查结果的survey.txt.其中data.txt和survey.txt我们可以用NOTEPAD分别创建之,并传到程序目录下.文件data.txt中存的是要进行调查的项目,注意每个项目应占一行:而survey

  • 也谈php网站在线人数统计

    function checkOnline($userid,$tempid=null)      {      $conn = connect(); //对于所有用户      //先设置自己为在线      $stmt = "UPDATE ".DB_NAME.".USER SET IsOnline='Y' WHERE UserID=".$userid;      $result = query($stmt,$conn);      //info($stmt);   

  • PHP+jquery实时显示网站在线人数的方法

    本文实例讲述了PHP+jquery实时显示网站在线人数的方法.分享给大家供大家参考.具体分析如下: 在线人数最简单的就是直接利用js调用php,这样可以显示出有多少人访问了本站,如果要在用户未刷新页面的状态实时显示用户在线人数,我们可以利用jquery ajax来实现. 我们在一些应用中需要动态展示数据,比如当前在线人数,当前交易总额,当前汇率等等,前端页面需要实时刷新获取最新数据.这里我们将结合实例给大家介绍使用jQuery和PHP来实现动态数字展示效果. 本例假设要在页面上动态展示(无需刷新

  • php查询操作实现投票功能

    本文实例为大家分享了php查询操作实现投票功能的代码,供大家参考,具体内容如下 题目: 解题方法汇总: 方法一: 1. 投票主页面: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1

  • php实现用户在线时间统计详解

    首先介绍一下所涉及的数据表结构,四个字段: 代码如下: 复制代码 代码如下: uid<int(10)> :用户id session_id<varchar(40)> :用户登录后系统产生的session_id,PHP可是使用session_id()函数获取 login_time<int(10)> :登录时间 logout_time<int(10)> :登出时间 1.客户端定时发送请求到服务器端.实现方法是在用户登录后,将uid,session_id,login

  • php在线打包程序源码

    实现打包功能~轻松方便!压缩比虽比winrar差那么一点 但是也没啥关系 毕竟只打包做下载 省下了自己去服务器上把站点打包 如果服务器不是自己的就更麻烦了 要让别人帮忙打下包 复制代码 代码如下: <?php     //php压缩目录成zip包     //作者:小锋       $button=$_POST['button'];     if($button=="开始打包")     {         $zip = new ZipArchive();         $fi

  • PHP+MySql+jQuery实现的"顶"和"踩"投票功能

    本文实例为大家分享了基于PHP+jQuery+MySql实现红蓝(顶踩)投票代码,供大家参考,具体内容如下 数据库操作: CREATE TABLE IF NOT EXISTS `votes` ( `id` int(10) NOT NULL AUTO_INCREMENT, `likes` int(10) NOT NULL DEFAULT '0', `unlikes` int(10) NOT NULL DEFAULT '0', PRIMARY KEY (`id`) ) ENGINE=MyISAM D

  • PHP+MySQL投票系统的设计和实现分享

    系统不大,完成这个系统的过程我分了三个步骤 •数据库设计 •系统框架设计 •前端美化 数据库的设计 设计三张表:投票结果统计表(count_voting),投票人记录表(ip_votes),用户表(user) 投票结果统计表用于统计最后的投票记录,我给它弄了4个字段:被投票项的名称(SelectName),被投票项标签名(LabelName)(起到分类的作用),票数(CountVotes). 投票人记录表用于登记投票人的ip(IP),地理位置(Location),投票时间(VoteTime),被

  • php投票系统之增加与删除投票(管理员篇)

    关于投票系统怎么样怎么样的引言就不多说,这不是毕业设计,主要说一下使用php实现投票系统,与其他普通系统一样,分为两部分,一个是管理员部分,一个是普通用户部分. 关于投票系统的管理部分,非常之简单,提供两部分的功能,增加投票与删除投票 关键在于设计好数据库的表,拟定于这样存一个投票,voteparent表存这个投票的标题.描述是否被删除,votechildren表存这个投票的子选项与投票数 一.基本目标 首先投票系统是这样的: 三个链接,点进去能够直接进行相关功能的操作,本文主写管理员部分,普通

随机推荐