亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > PHP > 正文

朋友網關于QQ相關的PHP代碼(研究QQ的絕佳資料)

2024-05-04 23:30:40
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了朋友網關于QQ相關的PHP代碼(研究QQ的絕佳資料),本文直接給出實現代碼,需要的朋友可以參考下
 

 

復制代碼代碼如下:

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

 

****************************************/
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;
        }
    }

}
?>

 

 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品第8页| 日韩成人在线播放| 亚洲国产精品大全| 久久精品中文字幕免费mv| 国产在线观看精品| 国产香蕉97碰碰久久人人| 另类视频在线观看| 国产精品精品一区二区三区午夜版| 国产精品一久久香蕉国产线看观看| 久久亚洲一区二区三区四区五区高| 97视频在线播放| 欧洲s码亚洲m码精品一区| 久久五月天综合| 亚洲一二在线观看| 国外色69视频在线观看| 精品精品国产国产自在线| 综合国产在线视频| 久热精品视频在线观看| 精品国产依人香蕉在线精品| 国产亚洲精品美女| 岛国精品视频在线播放| 高清一区二区三区日本久| 成人97在线观看视频| 欧美插天视频在线播放| 久久久影视精品| 欧美电影在线免费观看网站| 精品高清一区二区三区| 亚洲国产97在线精品一区| 亚洲字幕一区二区| 亚洲欧美另类中文字幕| 欧美性极品xxxx做受| 亚洲福利在线播放| 中文综合在线观看| 国产精品99久久久久久久久| 久久久亚洲成人| 日韩在线一区二区三区免费视频| 日韩风俗一区 二区| 国产亚洲欧美日韩精品| 亚洲2020天天堂在线观看| 国产精品中文字幕久久久| 亚洲综合社区网| 在线观看不卡av| 国产精品狠色婷| 国内揄拍国内精品少妇国语| 久久亚洲国产精品| 久久久精品影院| 亚洲欧美999| 色哟哟亚洲精品一区二区| 97成人在线视频| 国产99久久精品一区二区| 亚洲精选中文字幕| 国产精品福利网站| 国产精品爱久久久久久久| 91精品国产色综合久久不卡98口| 国产成人久久久精品一区| 欧美精品videosex极品1| 97国产在线观看| 91免费看国产| 美女999久久久精品视频| 欧美日韩激情视频| 热久久免费国产视频| 日韩国产在线看| 亚洲美女又黄又爽在线观看| 久久亚洲精品中文字幕冲田杏梨| 日韩精品在线电影| 国产欧美久久一区二区| 国产精品美女www爽爽爽视频| 欧美黄网免费在线观看| 亚洲欧美一区二区三区在线| 久久视频在线播放| 欧美日韩国产一区中文午夜| 国产经典一区二区| 国产精品自产拍在线观看中文| 亚洲欧洲xxxx| 亚洲性线免费观看视频成熟| 国产成人在线播放| 久久久久久久香蕉网| 日韩在线视频免费观看高清中文| 国产91色在线|| 午夜精品理论片| 欧美激情精品久久久久久久变态| 国产精品成人v| 亚洲精品一区二区久| 欧美激情欧美激情| 国产成人一区二区| 日韩精品免费在线播放| 久久这里有精品| 国产欧美亚洲视频| 国产福利精品在线| 国产成人福利网站| 欧美一级淫片丝袜脚交| 欧美乱大交xxxxx另类电影| 亚洲色图国产精品| 欧美日本精品在线| 国产欧美久久久久久| 2019中文字幕在线| 亚洲国产精品小视频| 日韩av资源在线播放| 91精品成人久久| 少妇av一区二区三区| 日韩电影在线观看永久视频免费网站| 亚洲精品国产电影| 国产拍精品一二三| 色综合天天综合网国产成人网| 亚洲欧美一区二区三区久久| 国产精品第二页| 国产精品国内视频| 久久成人在线视频| 国产精品一区二区三区在线播放| 亚洲黄色www网站| 国产黑人绿帽在线第一区| 亚洲网站视频福利| 午夜精品福利在线观看| 国产激情久久久久| 亚洲精品中文字幕有码专区| 久久在线免费视频| 激情亚洲一区二区三区四区| 国产成人精品在线视频| 成人情趣片在线观看免费| 精品国产户外野外| 欧美激情女人20p| 国产一区二区激情| 亚洲999一在线观看www| 日韩欧美在线视频| 亚洲精品网站在线播放gif| 91精品成人久久| 欧美大秀在线观看| 91夜夜未满十八勿入爽爽影院| 久久精品国产久精国产一老狼| 国产精品欧美久久久| 欧美一区二区三区艳史| 日韩成人在线播放| 亚洲国产精品99久久| 精品偷拍一区二区三区在线看| 精品久久中文字幕| 亚洲精品欧美一区二区三区| 国模视频一区二区| 91免费看片网站| 成人免费在线视频网址| 日韩欧美精品网站| 日韩av影院在线观看| 日韩av在线免费观看| 亚洲天堂成人在线视频| 最近2019好看的中文字幕免费| 久久久欧美一区二区| 久久精品成人动漫| www.亚洲免费视频| 国产日韩欧美中文在线播放| 精品久久久久久久大神国产| 久久久久久九九九| 国产深夜精品福利| 国产精品第100页| 136fldh精品导航福利| 精品自在线视频| 久久久久久亚洲精品不卡| 国产精品高潮在线| 日韩欧美在线中文字幕| 日韩中文字幕视频| 国产美女久久精品| 日韩av在线影视| 国产精品成熟老女人| 国产精品嫩草影院久久久| 欧美国产日韩一区二区在线观看| 国产精品高潮呻吟视频|