加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2020-12-13 02:22:39 所属栏目:PHP教程 来源:网络整理
导读:《朋友网关于QQ相关的PHP代码(研究QQ的绝佳资料)》要点: 本文介绍了朋友网关于QQ相关的PHP代码(研究QQ的绝佳资料),希望对您有用。如果有疑问,可以联系我们。 ? /*************************************** ****************************************/

《朋友网关于QQ相关的PHP代码(研究QQ的绝佳资料)》要点:
本文介绍了朋友网关于QQ相关的PHP代码(研究QQ的绝佳资料),希望对您有用。如果有疑问,可以联系我们。


<?
/***************************************

****************************************/
error_reporting(E_ALL ^ E_NOTICE);PHP进修

require_once( 'http.inc.php' );
require_once( 'class.Chinese.php');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 );PHP进修

//失败4xx
??? define( 'QQ_RETURN_FAILED',??? 400 );
??? define( 'QQ_LIST_ERROR',??? 401 );
??? define( 'QQ_GETMSG_ERROR',??? 402 );PHP进修

//在线状态
??? define( 'QQ_STATUS_ONLINE',??? 10);
??? define( 'QQ_STATUS_OFFLINE',??? 20);
??? define( 'QQ_STATUS_BUSY',??? 30);PHP进修

//血型
??? $QQ_DATA_BT = array
??????? (
=> '',
=> 'A型',
=> 'B型',
=> 'O型',
=> 'AB型',
=> '其他'
??????? );PHP进修

//星座
??? $QQ_DATA_CO = array
??????? (
=> '',
=> '水瓶座',
=> '双鱼座',
=> '牡羊座',
=> '金牛座',
=> '双子座',
=> '巨蟹座',
=> '狮子座',
=> '童贞座',
=> '天秤座',
=> '天蝎座',
=> '射手座',
=> '摩羯座'
??????? );

//生肖
??? $QQ_DATA_SH = array
??????? (
=> '',
=> '鼠',
=> '牛',
=> '虎',
=> '兔',
=> '龙',
=> '蛇',
=> '马',
=> '羊',
=> '猴',
=> '鸡',
=> '狗',
=> '猪'
??????? );PHP进修

//性别
??? $QQ_DATA_SX = array
??????? (
=> '男',
=> '女'
??????? );PHP进修

class QQClient
{
??? var $uin;
??? var $pwd;PHP进修

??? var $server??? =??? 'kconn.tencent.com';
??? //备用:219.133.51.11
??? var $port??? =??? 21001;
??? //备用:8000
??? var $httpclient;
??? var $chs??? =??? NULL;PHP进修

??? function QQClient($uin,$pwd)
??? {
??????? $this->uin = $uin;
??????? $this->pwd = $pwd;
??? }PHP进修

??? 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();
??? }PHP进修

??? function gb2312_to_utf8($str)
??? {
??????? $this->chs = new Chinese("GB2312","UTF8",$str );
??????? return $this->chs->ConvertIT();
??? }PHP进修

??? function query($str)
??? {
??????? $this->httpclient = new http( HTTP_V11,true );
??????? $this->httpclient->host = 'kconn.tencent.com';
??????? $this->httpcilent->port = 21001;PHP进修

??????? $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);
??? }PHP进修

??? function split_str($str)
??? {
??????? $arr = explode(",",$str);
??????? if($arr[count($arr)-1] == NULL)
??????? {
??????????? unset($arr[count($arr)-1]);
??????? }
??????? return $arr;
??? }PHP进修

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

??? }PHP进修

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

}
?>
PHP进修

《朋友网关于QQ相关的PHP代码(研究QQ的绝佳资料)》是否对您有启发,欢迎查看更多与《朋友网关于QQ相关的PHP代码(研究QQ的绝佳资料)》相关教程,学精学透。编程之家 52php.cn为您提供精彩教程。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读