>  기사  >  백엔드 개발  >  프렌즈닷컴의 QQ 관련 PHP 코드(QQ 공부에 좋은 정보)_php 스킬

프렌즈닷컴의 QQ 관련 PHP 코드(QQ 공부에 좋은 정보)_php 스킬

WBOY
WBOY원래의
2016-05-16 20:24:48840검색

코드 복사 코드는 다음과 같습니다.

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

*****************************************/
error_reporting(E_ALL ^ ​​E_NOTICE);

require_once( 'http.inc.php' );
require_once( 'class.English.php');


//성공2xx
    정의( 'QQ_RETURN_SUCCESS',    200 );
    정의( 'QQ_LOGIN_SUCCESS',    201 );
    정의( 'QQ_LIST_NONE',        202 );
    정의( 'QQ_ADDTOLIST_SUCCESS',    203 );
    정의( 'QQ_REPLYADD_SUCCESS',    204 );
    정의( 'QQ_GETMSG_NONE',    205 );

//警告3xx
    정의( 'QQ_ADDTOLIST_NEEDAUTH',300 );
    정의( 'QQ_ADDTOLIST_REFUSE',    301 );
    정의( 'QQ_ADDTOLIST_UNKNOWN',    302 );

//失败4xx
    정의( 'QQ_RETURN_FAILED',    400 );
    정의( 'QQ_LIST_ERROR',    401 );
    정의( 'QQ_GETMSG_ERROR',    402 );

//현재 상태
    정의( 'QQ_STATUS_ONLINE',    10);
    정의( 'QQ_STATUS_OFFLINE',    20);
    정의( 'QQ_STATUS_BUSY',    30);

//血型
    $QQ_DATA_BT = 배열
        (
=> '',
=> '아형',
=> 'B型',
=> '오형',
=> 'AB형',
=> '其他'
        );

//별장
    $QQ_DATA_CO = 배열
        (
=> '',
=> '수瓶座',
=> '双鱼座',
=> '牡羊座',
=> '金牛座',
=> '双子座',
=> '巨蟹座',
=> '狮子座',
=> '处女座',
=> '천사',
=> '천蝎座',
=> '射手座',
=> '摩羯座'
        );

//생육
    $QQ_DATA_SH = 배열
        (
=> '',
=> '鼠',
=> '牛',
=> '虎',
=> '兔',
=> '龙',
=> '蛇',
=> '马',
=> '羊',
=> '猴',
=> '鸡',
=> '狗',
=> '猪'
        );

//성별
    $QQ_DATA_SX = 배열
        (
=> '男',
=> '여인'
        );

클래스 QQClient
{
    var $uin;
    var $pwd;

    var $server    =    'kconn.tencent.com';
    //备사용:219.133.51.11
    var $port    =    21001;
    //사용용도:8000
    var $httpclient;
    var $chs    =    NULL;

    기능 QQClient($uin,$pwd)
    {
        $this->uin = $uin;
        $this->pwd = $pwd;
    }

    함수 인코딩($str)
    /*
        설명:把KEY1=VAL1&KEY2=VAL2格式变为数组
    */
    {
        $arr = 폭발('&' , $str);
        $return = 배열();
        foreach($arr $k=>$v)
        {
            list($key,$val) = 폭발('=',$v);
            $return[$key] = $val;
            $this->chs = NULL;
        }
        $return;
    }

    함수 utf8_to_gb2312($str)
    {
        $this->chs = 새로운 중국어("UTF8","GB2312", $str );
        return $this->chs->ConvertIT();
    }

    함수 gb2312_to_utf8($str)
    {
        $this->chs = 새로운 중국어("GB2312","UTF8", $str );
        return $this->chs->ConvertIT();
    }

    함수 쿼리($str)
    {
        $this->httpclient = 새로운 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();
        }
        그 외
        {
            print_r($this->httpclient);
            false를 반환합니다.
        }
        $this->httpclient->disconnect();
        unset($this->httpclient);
    }

    함수 분할_str($str)
    {
        $arr = 폭발("," , $str);
        if($arr[count($arr)-1] == NULL)
        {
            unset($arr[count($arr)-1]);
        }
        $arr;
반환     }

    함수 로그인()
    {
        //登陆
        //VER=1.1&CMD=로그인&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 및 $return['UIN'] == $this->uin)
        {
            //返回成功
            if($return['RS']==0)
            {
                //登陆成功
                QQ_LOGIN_SUCCESS를 반환합니다.
            }
            그 외
            {
                //登陆失败
                $GLOBALS['QQ_ERROR_MSG'] = $this->utf8_to_gb2312($return['RA']);
                QQ_LOGIN_FAILED를 반환합니다.
            }
        }
        그 외
        {
            //返回失败
            QQ_RETURN_FAILED를 반환합니다.
           
        }
    }

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 및 $return['UIN'] == $this->uin)
           {
//복귀 성공
                return $this->split_str($return['UN']);
}
        그 외
           {
//반품 실패
             QQ_RETURN_FAILED를 반환합니다.
                                                           }
}

함수 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 및 $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;
((개수($uns)==개수($nks))==(개수($sts)==개수($fcs)))==(개수($nks)==개수($sts)) ?
                        $num = 개수($uns)
:
$오류 = 1;
;
If($error == 1) QQ_LIST_ERROR를 반환합니다.
                     $arr = array();
for($i=0;$i<$num;$i )
                                             {
                          $arr[] = 배열(
"UN" => $uns[$i] ,
"NK" => $this->utf8_to_gb2312($nks[$i]) ,
"ST" => $sts[$i] ,
"FC" => $fcs[$i]
);
                }
                   반환($arr);
            }
           그 외
                {
//온라인 친구 수<=0
QQ_LIST_NONE을 반환합니다.
            }
                                                           }
        그 외
           {
//반품 실패
             QQ_RETURN_FAILED를 반환합니다.
                                                                      }
}

함수 getInfo($uin)
{
​​​​ //친구 정보 얻기
//AD는 연락처 주소, AG는 나이, EM은 MAIL, FC는 아바타, HP는 웹사이트, JB는 직업, PC는 우편번호, PH는 연락처 번호, PR은 프로필, PV는 도, RN은 본명, SC는 출신학교, SX는 성별, UN은 QQ번호, NK는 QQ 닉네임
//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 및 $return['UIN'] == $this->uin)
           {
//복귀 성공
                $arr = 배열
(
'Ad' = & gt; $ this- & gt; UTF8_TO_GB2312 ($ Return ['Ad']), //연락처 주소
'Ag' = & gt; $ this- & gt; UTF8_TO_GB2312 ($ Return ['ag']), // 나이
'Bt' = & gt; $ Return ['bt'], // 혈액형
'Co' = & gt; $ Return ['Co'], // 별자리
'Ct' = & gt; $ this- & gt; UTF8_TO_GB2312 ($ Return ['ct']), // 도시
'Cy' = & gt; $ this- & gt; UTF8_TO_GB2312 ($ Return ['cy']), // 국가
'Em' = & gt; $ this-& gt; UTF8_TO_GB2312 ($ Return ['em']), // 이메일
'Fc' = & gt; $ Return ['fc'], // 아바타
'Hp' = & gt; $ this-& gt; UTF8_TO_GB2312 ($ Return ['hp']), // 웹사이트
'Jb' = & gt; $ this-& gt; UTF8_TO_GB2312 ($ Return ['jb']), // 직업
                                              'MO' => 'Pc' = & gt; $ this-& gt; UTF8_TO_GB2312 ($ Return ['pc']), // 우편번호
'PH' = & gt; $ this- & gt; UTF8_TO_GB2312 ($ Return ['ph']), //연락처 전화번호
'PR' = & gt; $ this- & gt; UTF8_TO_GB2312 ($ Return ['PR']), // 소개
'Pv' = & gt; $ this- & gt; UTF8_TO_GB2312 ($ Return ['pv']), // 지방
'Rn' = & gt; $ this-& gt; UTF8_TO_GB2312 ($ Return ['rn']), // 실제 이름
'SC' = & GT; $ this- & gt; UTF8_TO_GB2312 ($ Return ['SC']), // 대학원
'Sh' = & gt; $ return ['sh'], // 황도대
                                   'SX' => 'Un' = & gt; $ Return [' un'], // QQ 번호
'Nk' = & gt; $ this- & gt; UTF8_TO_GB2312 ($ Return ['nk']) // 별명
);
               $arr 반환
}
        그 외
           {
//반품 실패
             QQ_RETURN_FAILED를 반환합니다.
                                                                      }

}

함수 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 및 $return['UIN'] == $this->uin)
           {
//복귀 성공
              스위치($return['CD'])
                {
사례 0 :
//상대방은 누구나 친구 추가를 허용합니다
QQ_ADDTOLIST_SUCCESS를 반환합니다.
휴식;
                사례 1:
>                                                                  QQ_ADDTOLIST_NEEDAUTH를 반환합니다.
휴식;
                사례 3:
//아무도 친구로 추가할 수 없습니다
QQ_ADDTOLIST_REFUSE를 반환합니다.
휴식;
> >                                              //알 수 없는 코드
QQ_ADDTOLIST_UNKNOWN을 반환합니다.
휴식;
            }
}
        그 외
           {
//반품 실패
             QQ_RETURN_FAILED를 반환합니다.
}
}

함수 replyAdd($uin,$type,$msg)
{
//친구 추가에 응답
//VER=1.1&CMD=Ack_AddToList&SEQ=&UIN=&UN=&CD=&RS=
                      //CD는 응답 상태, CD 0은 '인증 통과'를 의미합니다. CD 1은 "상대방을 친구로 추가하는 것을 거부함"을 의미합니다. 2장의 CD는 "상대방을 친구로 추가해 달라고 요청한다"는 의미입니다. 요청이유는 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 및 $return['UIN'] == $this->uin)
           {
//서버가 정보를 성공적으로 획득했습니다
             QQ_RETURN_SUCCESS를 반환합니다.
}
        그 외
           {
                    //실패
               QQ_RETURN_FAILED 반환;                                    }
}

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 및 $return['UIN'] == $this->uin)
           {
//서버가 정보를 성공적으로 획득했습니다
             QQ_RETURN_SUCCESS를 반환합니다.
}
        그 외
           {
                    //실패
             QQ_RETURN_FAILED를 반환합니다.
}
}

함수 변경상태($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 및 $return['UIN'] == $this->uin)
           {
//서버가 정보를 성공적으로 획득했습니다
             QQ_RETURN_SUCCESS를 반환합니다.
}
        그 외
           {
                    //실패
             QQ_RETURN_FAILED를 반환합니다.
}
}

로그아웃() 기능
{
//로그아웃
//VER=1.1&CMD=로그아웃&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 및 $return['UIN'] == $this->uin)
           {
//서버가 정보를 성공적으로 획득했습니다
             QQ_RETURN_SUCCESS를 반환합니다.
}
        그 외
           {
                    //실패
             QQ_RETURN_FAILED를 반환합니다.
}
}

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 및 $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;
(개수($mts)==개수($uns))==(개수($uns)==개수($mgs))?
                        $num = 개수($uns)
:
$오류 = 1;
;
If($error == 1) return QQ_GETMSG_ERROR; //뭔가 잘못되었습니다
                     $arr = array();
for($i=0;$i<$num;$i )
                                             {
                          $arr[] = 배열(
"MT" => $mts[$i] ,
"UN" => $uns[$i] ,
"MG" => $this->utf8_to_gb2312($mgs[$i])
);
                }
                   반환($arr);
            }
           그 외
                {
//온라인 친구 수<=0
QQ_GETMSG_NONE을 반환합니다.
            }
}
        그 외
           {
                    //실패
             QQ_RETURN_FAILED를 반환합니다.
}
}

함수 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 및 $return['UIN'] == $this->uin)
           {
//서버가 정보를 성공적으로 획득했습니다
             QQ_RETURN_SUCCESS를 반환합니다.
}
        그 외
           {
                    //실패
             QQ_RETURN_FAILED를 반환합니다.
}
}

}
?>

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.