Jadual Kandungan
朋友网关于QQ相关的PHP代码(研究QQ的绝佳资料),php绝佳
Rumah php教程 php手册 朋友网关于QQ相关的PHP代码(研究QQ的绝佳资料),php绝佳

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

Jun 13, 2016 am 09:16 AM
php qq

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

复制代码 代码如下:


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

****************************************/
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                 {
                    $arr[] = array(
                        "UN" => $uns[$i] ,
                        "NK" => $this->utf8_to_gb2312($nks[$i]) ,
                        "ST" => $sts[$i] ,
                        "FC" => $fcs[$i]
                    );
                }
                return ($arr);
            }
            else
            {
                //在线好友数                 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                 {
                    $arr[] = array(
                        "MT" => $mts[$i] ,
                        "UN" => $uns[$i] ,
                        "MG" => $this->utf8_to_gb2312($mgs[$i])
                    );
                }
                return ($arr);
            }
            else
            {
                //在线好友数                 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;
        }
    }

}
?>

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Jelaskan JSON Web Tokens (JWT) dan kes penggunaannya dalam PHP API. Jelaskan JSON Web Tokens (JWT) dan kes penggunaannya dalam PHP API. Apr 05, 2025 am 12:04 AM

JWT adalah standard terbuka berdasarkan JSON, yang digunakan untuk menghantar maklumat secara selamat antara pihak, terutamanya untuk pengesahan identiti dan pertukaran maklumat. 1. JWT terdiri daripada tiga bahagian: header, muatan dan tandatangan. 2. Prinsip kerja JWT termasuk tiga langkah: menjana JWT, mengesahkan JWT dan muatan parsing. 3. Apabila menggunakan JWT untuk pengesahan di PHP, JWT boleh dijana dan disahkan, dan peranan pengguna dan maklumat kebenaran boleh dimasukkan dalam penggunaan lanjutan. 4. Kesilapan umum termasuk kegagalan pengesahan tandatangan, tamat tempoh, dan muatan besar. Kemahiran penyahpepijatan termasuk menggunakan alat debugging dan pembalakan. 5. Pengoptimuman prestasi dan amalan terbaik termasuk menggunakan algoritma tandatangan yang sesuai, menetapkan tempoh kesahihan dengan munasabah,

Terangkan pengikatan statik lewat dalam php (statik: :). Terangkan pengikatan statik lewat dalam php (statik: :). Apr 03, 2025 am 12:04 AM

Mengikat statik (statik: :) Melaksanakan pengikatan statik lewat (LSB) dalam PHP, yang membolehkan kelas panggilan dirujuk dalam konteks statik dan bukannya menentukan kelas. 1) Proses parsing dilakukan pada masa runtime, 2) Cari kelas panggilan dalam hubungan warisan, 3) ia boleh membawa overhead prestasi.

Apakah kaedah Magic PHP (__construct, __destruct, __call, __get, __set, dll) dan menyediakan kes penggunaan? Apakah kaedah Magic PHP (__construct, __destruct, __call, __get, __set, dll) dan menyediakan kes penggunaan? Apr 03, 2025 am 12:03 AM

Apakah kaedah sihir PHP? Kaedah sihir PHP termasuk: 1. \ _ \ _ Membina, digunakan untuk memulakan objek; 2. \ _ \ _ Destruct, digunakan untuk membersihkan sumber; 3. \ _ \ _ Call, mengendalikan panggilan kaedah yang tidak wujud; 4. \ _ \ _ Mendapatkan, melaksanakan akses atribut dinamik; 5. \ _ \ _ Set, melaksanakan tetapan atribut dinamik. Kaedah ini secara automatik dipanggil dalam situasi tertentu, meningkatkan fleksibiliti dan kecekapan kod.

Perisian apa yang boleh membuat bitcoin? Cadangan Perisian Perdagangan 10 Bitcoin Teratas pada tahun 2025 Perisian apa yang boleh membuat bitcoin? Cadangan Perisian Perdagangan 10 Bitcoin Teratas pada tahun 2025 Feb 21, 2025 pm 09:30 PM

Dengan perkembangan pesat pasaran Bitcoin, adalah penting untuk memilih perisian perdagangan yang boleh dipercayai. Artikel ini akan mencadangkan perisian Perdagangan Sepuluh Bitcoin teratas pada tahun 2025 untuk membantu anda berdagang dengan cekap dan selamat. Perisian ini telah ditayangkan dengan ketat dan mempertimbangkan faktor-faktor seperti fungsi, keselamatan, keramahan pengguna dan tahap sokongan. Dari platform mesra pemula ke alat yang kompleks untuk peniaga yang berpengalaman, anda akan mendapati pilihan terbaik untuk keperluan perdagangan anda dalam senarai ini.

Terangkan ungkapan perlawanan (Php 8) dan bagaimana ia berbeza dari suis. Terangkan ungkapan perlawanan (Php 8) dan bagaimana ia berbeza dari suis. Apr 06, 2025 am 12:03 AM

Dalam Php8, ungkapan perlawanan adalah struktur kawalan baru yang mengembalikan hasil yang berbeza berdasarkan nilai ungkapan. 1) Ia sama dengan pernyataan suis, tetapi mengembalikan nilai dan bukannya blok pernyataan pelaksanaan. 2) Ekspresi perlawanan secara ketat (===), yang meningkatkan keselamatan. 3) Ia mengelakkan kemungkinan ketinggalan dalam penyataan suis dan meningkatkan kesederhanaan dan kebolehbacaan kod.

Apakah pemalsuan permintaan lintas tapak (CSRF) dan bagaimana anda melaksanakan perlindungan CSRF di PHP? Apakah pemalsuan permintaan lintas tapak (CSRF) dan bagaimana anda melaksanakan perlindungan CSRF di PHP? Apr 07, 2025 am 12:02 AM

Dalam PHP, anda boleh mencegah serangan CSRF dengan menggunakan token yang tidak dapat diramalkan. Kaedah khusus termasuk: 1. Menjana dan membenamkan token CSRF dalam bentuk; 2. Sahkan kesahihan token semasa memproses permintaan.

Ringkasan Perisian Essential untuk Bulatan Mata Wang 2025 Ringkasan Perisian Essential untuk Bulatan Mata Wang 2025 Feb 21, 2025 pm 09:42 PM

Panduan ini memberikan gambaran keseluruhan alat perisian penting dalam bulatan mata wang yang membantu pengguna mengurus dan berdagang aset crypto dengan lebih cekap. Perisian ini meliputi pelbagai kategori dari platform perdagangan ke alat analisis dan penyelesaian keselamatan. Panduan ini direka untuk membantu pengguna mempersiapkan pasaran Crypto yang akan datang pada tahun 2025.

PHP dan Python: Membandingkan dua bahasa pengaturcaraan yang popular PHP dan Python: Membandingkan dua bahasa pengaturcaraan yang popular Apr 14, 2025 am 12:13 AM

PHP dan Python masing -masing mempunyai kelebihan mereka sendiri, dan memilih mengikut keperluan projek. 1.PHP sesuai untuk pembangunan web, terutamanya untuk pembangunan pesat dan penyelenggaraan laman web. 2. Python sesuai untuk sains data, pembelajaran mesin dan kecerdasan buatan, dengan sintaks ringkas dan sesuai untuk pemula.

See all articles