手机
当前位置:查字典教程网 >编程开发 >php教程 >朋友网关于QQ相关的PHP代码(研究QQ的绝佳资料)
朋友网关于QQ相关的PHP代码(研究QQ的绝佳资料)
摘要:复制代码代码如下:'',=>'A型',=>'B型',=>'O型',=>'AB型',=>'其他');//星座$QQ_DATA_CO=array...

复制代码 代码如下:

<?

/***************************************

****************************************/

error_reporting(E_ALL ^ E_NOTICE);

require_once( 'http.inc.php' );

require_once( 'class.Chinese.php');

//成功2xx

define( 'QQ_RETURN_SUCCESS', 200 );

define( 'QQ_LOGIN_SUCCESS', 201 );

define( 'QQ_LIST_NONE', 202 );

define( 'QQ_ADDTOLIST_SUCCESS', 203 );

define( 'QQ_REPLYADD_SUCCESS', 204 );

define( 'QQ_GETMSG_NONE', 205 );

//警告3xx

define( 'QQ_ADDTOLIST_NEEDAUTH',300 );

define( 'QQ_ADDTOLIST_REFUSE', 301 );

define( 'QQ_ADDTOLIST_UNKNOWN', 302 );

//失败4xx

define( 'QQ_RETURN_FAILED', 400 );

define( 'QQ_LIST_ERROR', 401 );

define( 'QQ_GETMSG_ERROR', 402 );

//在线状态

define( 'QQ_STATUS_ONLINE', 10);

define( 'QQ_STATUS_OFFLINE', 20);

define( 'QQ_STATUS_BUSY', 30);

//血型

$QQ_DATA_BT = array

(

=> '',

=> 'A型',

=> 'B型',

=> 'O型',

=> 'AB型',

=> '其他'

);

//星座

$QQ_DATA_CO = array

(

=> '',

=> '水瓶座',

=> '双鱼座',

=> '牡羊座',

=> '金牛座',

=> '双子座',

=> '巨蟹座',

=> '狮子座',

=> '处女座',

=> '天秤座',

=> '天蝎座',

=> '射手座',

=> '摩羯座'

);

//生肖

$QQ_DATA_SH = array

(

=> '',

=> '鼠',

=> '牛',

=> '虎',

=> '兔',

=> '龙',

=> '蛇',

=> '马',

=> '羊',

=> '猴',

=> '鸡',

=> '狗',

=> '猪'

);

//性别

$QQ_DATA_SX = array

(

=> '男',

=> '女'

);

class QQClient

{

var $uin;

var $pwd;

var $server = 'kconn.tencent.com';

//备用:219.133.51.11

var $port = 21001;

//备用:8000

var $httpclient;

var $chs = NULL;

function QQClient($uin,$pwd)

{

$this->uin = $uin;

$this->pwd = $pwd;

}

function encode($str)

/*

说明:把KEY1=VAL1&KEY2=VAL2格式变为数组

*/

{

$arr = explode('&' , $str);

$return = array();

foreach($arr as $k=>$v)

{

list($key,$val) = explode('=',$v);

$return[$key] = $val;

$this->chs = NULL;

}

return $return;

}

function utf8_to_gb2312($str)

{

$this->chs = new Chinese("UTF8","GB2312", $str );

return $this->chs->ConvertIT();

}

function gb2312_to_utf8($str)

{

$this->chs = new Chinese("GB2312","UTF8", $str );

return $this->chs->ConvertIT();

}

function query($str)

{

$this->httpclient = new http( HTTP_V11, true );

$this->httpclient->host = 'kconn.tencent.com';

$this->httpcilent->port = 21001;

$query = $this->encode($str);

$status = $this->httpclient->post( '', $query, '' );

if ( $status == HTTP_STATUS_OK ) {

return $this->httpclient->get_response_body();

}

else

{

print_r($this->httpclient);

return false;

}

$this->httpclient->disconnect();

unset($this->httpclient);

}

function split_str($str)

{

$arr = explode("," , $str);

if($arr[count($arr)-1] == NULL)

{

unset($arr[count($arr)-1]);

}

return $arr;

}

function login()

{

//登陆

//VER=1.1&CMD=Login&SEQ=&UIN=&PS=&M5=1&LC=9326B87B234E7235

$str = "VER=1.1&CMD=Login&SEQ=".rand(1000,9000)."&UIN=".$this->uin."&PS=".md5($this->pwd)."&M5=1&LC=9326B87B234E7235";

$return = $this->encode($this->query($str));

if($return['RES']==0 and $return['UIN'] == $this->uin)

{

//返回成功

if($return['RS']==0)

{

//登陆成功

return QQ_LOGIN_SUCCESS;

}

else

{

//登陆失败

$GLOBALS['QQ_ERROR_MSG'] = $this->utf8_to_gb2312($return['RA']);

return QQ_LOGIN_FAILED;

}

}

else

{

//返回失败

return QQ_RETURN_FAILED;

}

}

function getFriendsList()

{

//得到好友列表

//VER=1.1&CMD=List&SEQ=&UIN=&TN=160&UN=0

$str = "VER=1.1&CMD=List&SEQ=".rand(1000,9000)."&UIN=".$this->uin."&TN=160&UN=0";

$return = $this->encode($this->query($str));

if($return['RES']==0 and $return['UIN'] == $this->uin)

{

//返回成功

return $this->split_str($return['UN']);

}

else

{

//返回失败

return QQ_RETURN_FAILED;

}

}

function getOnlineList()

{

//得到在线好友列表

//VER=1.1&CMD=Query_Stat&SEQ=&UIN=&TN=50&UN=0

$str = "VER=1.1&CMD=Query_Stat&SEQ=".rand(1000,9000)."&UIN=".$this->uin."&TN=50&UN=0";

$return = $this->encode($this->query($str));

if($return['RES']==0 and $return['UIN'] == $this->uin)

{

//返回成功

if($return['SN'] > 0)

{

//在线好友数>0

$uns = $this->split_str($return['UN']); //号码列表

$nks = $this->split_str($return['NK']); //昵称列表

$sts = $this->split_str($return['ST']); //状态列表

$fcs = $this->split_str($return['FC']); //头像列表

$error = 0;

((count($uns)==count($nks))==(count($sts)==count($fcs)))==(count($nks)==count($sts)) ?

$num = count($uns)

:

$error = 1;

;

if($error == 1) return QQ_LIST_ERROR;

$arr = array();

for($i=0;$i<$num;$i++)

{

$arr[] = array(

"UN" => $uns[$i] ,

"NK" => $this->utf8_to_gb2312($nks[$i]) ,

"ST" => $sts[$i] ,

"FC" => $fcs[$i]

);

}

return ($arr);

}

else

{

//在线好友数<=0

return QQ_LIST_NONE;

}

}

else

{

//返回失败

return QQ_RETURN_FAILED;

}

}

function getInfo($uin)

{

//得到好友信息

//AD为联系地址,AG为年龄,EM为MAIL,FC为头像,HP为网站,JB为职业,PC为邮编,PH为联系电话,PR为简介,PV为省,RN为真实名称,SC为毕业院校,SX为性别,UN为QQ号,NK为QQ昵称

//以下注释研究 by Hackfan

//BT为血型,CO为星座,CT为城市,CY为国家,MO为移动电话,SH生肖

//LV为查询的号码(1为精简查询,2为普通查询,3为详细查询)

//CV未知,ID未知(身份证?),MT未知,MV未知,

//VER=1.1&CMD=GetInfo&SEQ=&UIN=&LV=3&UN=

$str = "VER=1.1&CMD=GetInfo&SEQ=".rand(1000,9000)."&UIN=".$this->uin."&LV=3&UN=".$uin;

$return = $this->encode($this->query($str));

if($return['RES']==0 and $return['UIN'] == $this->uin)

{

//返回成功

$arr = array

(

'AD' => $this->utf8_to_gb2312($return['AD']), //联系地址

'AG' => $this->utf8_to_gb2312($return['AG']), //年龄

'BT' => $return['BT'], //血型

'CO' => $return['CO'], //星座

'CT' => $this->utf8_to_gb2312($return['CT']), //城市

'CY' => $this->utf8_to_gb2312($return['CY']), //国家

'EM' => $this->utf8_to_gb2312($return['EM']), //Email

'FC' => $return['FC'], //头像

'HP' => $this->utf8_to_gb2312($return['HP']), //网站

'JB' => $this->utf8_to_gb2312($return['JB']), //职业

'MO' => $return['MO'], //移动电话

'PC' => $this->utf8_to_gb2312($return['PC']), //邮编

'PH' => $this->utf8_to_gb2312($return['PH']), //联系电话

'PR' => $this->utf8_to_gb2312($return['PR']), //简介

'PV' => $this->utf8_to_gb2312($return['PV']), //省

'RN' => $this->utf8_to_gb2312($return['RN']), //真实姓名

'SC' => $this->utf8_to_gb2312($return['SC']), //毕业院校

'SH' => $return['SH'], //生肖

'SX' => $return['SX'], //性别

'UN' => $return['UN'], //QQ号

'NK' => $this->utf8_to_gb2312($return['NK']) //昵称

);

return $arr;

}

else

{

//返回失败

return QQ_RETURN_FAILED;

}

}

function addFriend($uin)

{

//添加新好友

//VER=1.1&CMD=AddToList&SEQ=&UIN=&UN=

$str = "VER=1.1&CMD=AddToList&SEQ=".rand(1000,9000)."&UIN=".$this->uin."&UN=".$uin;

$return = $this->encode($this->query($str));

if($return['RES']==0 and $return['UIN'] == $this->uin)

{

//返回成功

switch($return['CD'])

{

case 0 :

//对方允许任何人加为好友

return QQ_ADDTOLIST_SUCCESS;

break;

case 1 :

//需要验证

return QQ_ADDTOLIST_NEEDAUTH;

break;

case 3 :

//不允许任何人加为好友

return QQ_ADDTOLIST_REFUSE;

break;

default :

//未知的代码

return QQ_ADDTOLIST_UNKNOWN;

break;

}

}

else

{

//返回失败

return QQ_RETURN_FAILED;

}

}

function replyAdd($uin,$type,$msg)

{

//回应添加好友

//VER=1.1&CMD=Ack_AddToList&SEQ=&UIN=&UN=&CD=&RS=

//CD为响应状态,CD为0表示“通过验证”。CD为1表示“拒决加为对方为好友”。CD为2表示“为请求对方加为好友”。RS为你要请求的理由

$str = "VER=1.2&CMD=Ack_AddToList&SEQ=".rand(1000,9000)."&UIN=".$this->uin."&UN=".$uin."&CD=".$type."&RS=".$this->gb2312_to_utf8($msg);

$return = $this->encode($this->query($str));

if($return['RES']==0 and $return['UIN'] == $this->uin)

{

//服务器成功得到信息

return QQ_RETURN_SUCCESS;

}

else

{

//失败

return QQ_RETURN_FAILED;

}

}

function delFriend($uin)

{

//删除好友

//VER=1.1&CMD=DelFromList&SEQ=&UIN=&UN=

$str = "VER=1.1&CMD=DelFromList&SEQ=".rand(1000,9000)."&UIN=".$this->uin."&UN=$uin";

$return = $this->encode($this->query($str));

if($return['RES']==0 and $return['UIN'] == $this->uin)

{

//服务器成功得到信息

return QQ_RETURN_SUCCESS;

}

else

{

//失败

return QQ_RETURN_FAILED;

}

}

function changeStatus($status)

{

//改变状态

//VER=1.1&CMD=Change_Stat&SEQ=&UIN=&ST=

//ST为要改变的状态,10为上线,20为离线,30为忙碌。

$str = "VER=1.1&CMD=Change_stat&SEQ=".rand(1000,9000)."&UIN=".$this->uin."&ST=".$status;

$return = $this->encode($this->query($str));

if($return['RES']==0 and $return['UIN'] == $this->uin)

{

//服务器成功得到信息

return QQ_RETURN_SUCCESS;

}

else

{

//失败

return QQ_RETURN_FAILED;

}

}

function logout()

{

//退出登陆

//VER=1.1&CMD=Logout&SEQ=&UIN=

$str = "VER=1.1&CMD=Logout&SEQ=".rand(1000,9000)."&UIN=".$this->uin;

$return = $this->encode($this->query($str));

if($return['RES']==0 and $return['UIN'] == $this->uin)

{

//服务器成功得到信息

return QQ_RETURN_SUCCESS;

}

else

{

//失败

return QQ_RETURN_FAILED;

}

}

function getMsg()

{

//获得消息

//VER=1.1&CMD=GetMsgEx&SEQ=&UIN=

//MT表示消息类型,99表示系统消息,9表示用户消息。UN表示消息发送来源用户,MG表示发送的消息,MG消息可以表示某些特定的系统含意

//当MT=99时:MG=10表示用户上线,MG=20表示用户离线,MG=30表示用户忙碌

$str = "VER=1.1&CMD=GetMsgEx&SEQ=".rand(1000,9000)."&UIN=".$this->uin;

$return = $this->encode($this->query($str));

if($return['RES']==0 and $return['UIN'] == $this->uin)

{

//服务器成功得到信息

if($return['MN'] > 0)

{

//消息数>0

$mts = $this->split_str($return['MT']); //消息类型

$uns = $this->split_str($return['UN']); //发送者号码

$mgs = $this->split_str($return['MG']); //消息内容

$error = 0;

(count($mts)==count($uns))==(count($uns)==count($mgs))?

$num = count($uns)

:

$error = 1;

;

if($error == 1) return QQ_GETMSG_ERROR; //出差错了

$arr = array();

for($i=0;$i<$num;$i++)

{

$arr[] = array(

"MT" => $mts[$i] ,

"UN" => $uns[$i] ,

"MG" => $this->utf8_to_gb2312($mgs[$i])

);

}

return ($arr);

}

else

{

//在线好友数<=0

return QQ_GETMSG_NONE;

}

}

else

{

//失败

return QQ_RETURN_FAILED;

}

}

function sendMsg($uin,$msg)

{

//发送消息

//VER=1.1&CMD=CLTMSG&SEQ=&UIN=&UN=&MG=

$str = "VER=1.1&CMD=CLTMSG&SEQ=".rand(1000,9000)."&UIN=".$this->uin."&UN=".$uin."&MG=".$this->gb2312_to_utf8($msg);

$return = $this->encode($this->query($str));

if($return['RES']==0 and $return['UIN'] == $this->uin)

{

//服务器成功得到信息

return QQ_RETURN_SUCCESS;

}

else

{

//失败

return QQ_RETURN_FAILED;

}

}

}

?>

【朋友网关于QQ相关的PHP代码(研究QQ的绝佳资料)】相关文章:

关于PHP中的Class的几点个人看法

PHP使用CURL实现多线程抓取网页

利用PHP创建动态图像

Mysql 4.1 Windows 下升级问题

在线竞拍系统的PHP实现框架(一)

PHP和JAVA的XML-RPC中文问题解决办法

BBS(php & mysql)完整版(一)

用PHP实现小型站点广告管理(修正版)

如何在HTML中嵌入PHP 代码

全文搜索和替换

精品推荐
分类导航