用PHP取QQ在线状态

    这两天无心工作,无聊中就写了这个用PHP取QQ在线状态的小东西。原理很简单,省略不说了,可以看代码。用的是互动状态这个服务去取状态的。
    用法也简单,传入的参数为QQ号码,函数返回1则表示QQ在线,函数返回0则表示QQ不在线,返回小于0则表示出错。

注:需要QQ是用QQ2004II beta1或以上版本登陆才可以检测得到哦:)

顺祝大家圣诞快乐。

附代码如下:



<?php
// vim: set expandtab tabstop=4 shiftwidth=4 fdm=marker:
// +----------------------------------------------------------------------+
// | PHP Library.                                                         |
// +----------------------------------------------------------------------+
// | Copyright (c) 2004 Fishchen, China.                                  |
// +----------------------------------------------------------------------+
// | Authors: Fishchen, China.                                            |
// |          fishchen <fishchen#gmail.com>                               |
// +----------------------------------------------------------------------+
// $Id$


/**
 * @note    License: GNU General Public License (GPL) version 2
 * @file    $RCSfile$
 * @version 1.0
 * @author  fishchen
 * @date    2004/12/24 11:00:00 (Merry Xmas)
 * @brief   Get QQ Online Status.
 */


/* {{{ function tphp_qq_online( $uin ) */
/**
 * Get QQ online status.
 *
 * @note                    Need user login QQ with QQ2004IIbeta1 or laster.
 * @param   int     $uin    QQ Number.
 * @retval  int     $ret    1: online, 0: offline, <0: error.
 */
function tphp_qq_online( $uin )
{
    $reques  = "GET /pa?p=1:".$uin.":1 HTTP/1.1/r/n";
    $reques .= "Host: wpa.qq.com/r/n";
    $reques .= "User-Agent: PHP_QQ_SPY/r/n/r/n";

    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( "/r/n", $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 );
}
/* }}} */


/* {{{ sample:
echo tphp_qq_online( 80000800 );
}}} */


?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值