ホームページ >バックエンド開発 >PHPチュートリアル >PHP が QQ ユーザーのニックネームとオンライン ステータスを取得する (分析例)_PHP チュートリアル

PHP が QQ ユーザーのニックネームとオンライン ステータスを取得する (分析例)_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:25:531160ブラウズ

QQ は、異なる画像を返すことでオンラインかオフラインを示します。画像が異なるため、返される HTTP ヘッダー情報の Content-Length も異なる必要があり、カラー画像は同じ画像よりも優れている必要があります。 . 暗い画像は大きくする必要があるため、特定のスタイルのカラー画像と暗い画像の中間値を見つけることで、ヘッダーの戻り長を判断して QQ オンライン ステータスを取得できます。 以下はコードです
​​

。コード コードは次のとおりです:
{
error_reporting(0);
$f=file_get_contents('http://wpa.qq.com/pa?p=1 :'.$uin. ':4');
if(!$f) return(true);
foreach($http_response_header as $val)
{
if(strpos($val,'Content-Length')! ==false)
{
return(intval(substr($val,16,50))>1000);
}
}
}

?>


上記は比較的簡単ですが、より良いものを示します

コードをコピーします コードは次のとおりです:
<
function tphp_qq_online( $uin )
{
$ reques = "GET / pa?p=1:".$uin.":1 HTTP/1.1rn";
$reques .= "ホスト: wpa.qq.comrn"; PHP_QQ_SPYrnrn";

if ( !( $socket =ソケット_create( AF_INET, SOCK_STREAM, SOL_TCP ) ) ) return(-1);
if ( !(socket_connect( $socket, "wpa.qq.com", 80 ) ) ) return(-1) ;
if ( !(socket_write( $socket, $reques ) ) ) return(-1);
if ( !( $respon =ソケット_read( $socket, 1024, PHP_BINARY_READ ) ) ) return(-1) );;
ソケットクローズ ( $socket );

$field =explode( "rn", $respon );
for ( $i=0; $i if ( strncasecmp ($field[$ i], "場所:", 9) == 0 ) {
i], "オフライン") ) { $ret = 0;
} // if
} // for

return( $ret );
}
/* }}} */



エコー tphp_qq_online( 561272831 );

?>


例、qqユーザーのニックネームとオンラインステータス

コードをコピー

コードは次のとおりです:


//QQステータスを取得
function getQQState($qq){
$url = 'http:///wpa.qq.com/pa?p=2:'.$qq.':41&r=' . time (); $headInfo = get_headers($url,1); $length = $headInfo ['Content- Length']; if ($length==1243) { return true;
}else {
return false;
}
}
//QQ ニックネームを取得
function getQQNick($qq){
$ str = file_get_contents( 'http://r.qzone.qq.com/cgi-bin/user/cgi_personal_card?uin='.$qq);
$pattern = '/'.preg_quote('"ニックネーム":"' ,'/' ).'(.*?)'.preg_quote('",','/').'/i';
preg_match ( $pattern,$str, $result );
return $result[1 ];
}
//QQ 名を取得
function getQQName($qq){
//$qqArr = include 'friendArr.php';//プリセット
//$username = $qqArr[$qq];
if ( !$ ユーザー名) {
$ユーザー名 = getQQNick($qq);
}
return $ユーザー名;
}






http://www.bkjia.com/PHPjc/824918.html

www.bkjia.com
tru​​ehttp://www.bkjia.com/PHPjc/824918.html

技術記事 QQ は異なる画像を返すことでオンラインかオフラインを示します。画像が異なるため、返される HTTP ヘッダー情報の Content-Length も異なる必要があり、カラー画像も異なります...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。