首页 > 编程 > PHP > 正文

朋友网关于QQ相关的PHP代码(研究QQ的绝佳资料)

2020-03-22 17:22:15
字体:
来源:转载
供稿:网友
/*******************************************************************************/
error_reporting(E_ALL ^ E_NOTICE);require_once( 'http.inc.php' );
require_once( 'html' target='_blank'>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
$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
$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-
$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-
$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;
}
}}

PHP教程

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表