快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

PHP实现QQ挂机编程(2):取QQ在线状态

  这是一个PHP取QQ在线状态程序。原理很简朴,省略不说了,可以看代码。用的是互动状态这个服务去取状态的。

  用法也简朴,传入的参数为QQ号码,函数返回1则表示QQ在线,函数返回0则表示QQ不在线,返回小于0则表示出错。

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


代码如下:

<?php
// vim: set expandtab tabstop=4 shiftwidth=4 fdm=marker:
// | Copyright (c) 2004 Fishchen, China.
// | Authors: Fishchen, China.
// $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.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 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 );
}}} */

?>


注:以上为抛砖引玉,各位可以以此参照写出其他语言的版本;

附:不用程序,得到一个用户QQ在线状态(把下面代码另存为一个.htm文件即可)

<script language=vbscript>

Function GetURL(url)

Set Retrieval = CreateObject("Microsoft.XMLHTTP")

With Retrieval

.Open "GET", url, False, "", ""

.Send

GetURL = .ResponseText

End With

Set Retrieval = Nothing

End Function

</script>


小图标:

<script language=vbscript>

Dim T,Start,Length,PicURL

T=GetURL("http://search.tencent.com/cgi-bin/friend/oicq_find?oicq_no=1924192")


Start=Instr(1,T,"ShowResult("+chr(34))

Start=Instr(Start,T,"http://")

Length=Instr(Start,T,chr(34)+","+chr(34))-Start

PicURL=Mid(T,Start,Length)

′document.write "<img src=′"&PicURL&"′>"

document.write "<a href=http://search.tencent.com/cgi-bin/friend/user_show_info?ln=1924192
target=_blank title=QQ:1924192><img src="&PicURL&" width=16
height=16 border=0></a>"

</script>


大图标:

<script language=vbscript>

Dim T,Start,Length,PicURL

T=GetURL("http://search.tencent.com/cgi-bin/friend/user_show_info?ln=1924192")


Start=Instr(1,T,"img height=32")

Start=Instr(Start,T,"http://")

Length=Instr(Start,T,chr(34)+" width=32")-Start

PicURL=Mid(T,Start,Length)

′document.write "<img src=′"&PicURL&"′>"

document.write "<a href=http://search.tencent.com/cgi-bin/friend/user_show_info?ln=1924192
target=_blank title=QQ:1924192><img src="&PicURL&" width=32
height=32 border=0></a>"

</script>


相关链接:用php实现qq挂机的程序
返回类别: 教程
上一教程: 为php4加入动态flash文件的生成的支持
下一教程: PHP个人网站架设连环讲(二)

您可以阅读与"PHP实现QQ挂机编程(2):取QQ在线状态"相关的教程:
· 用php实现qq挂机
· 用php实现qq挂机的程序
· PHP对象编程实现3D饼图
· PHP中实现面向对象编程
· 第一节--面向对象编程 -- PHP5的类与对象 [1]
    微笑服务 优质保证 索取样品