php 模拟登录qq空间,PHP模拟登录QQ空间的例子

* @version $Id$

+------------------------------------------------------------------------------

*/

class Http

{//类定义开始

/**

+----------------------------------------------------------

* 采集远程文件

+----------------------------------------------------------

* @access public

+----------------------------------------------------------

* @param string $remote 远程文件名

* @param string $local 本地保存文件名

+----------------------------------------------------------

* @return mixed

+----------------------------------------------------------

*/

static public function curl_download($remote,$local) {

$cp = curl_init($remote);

$fp = fopen($local,"w");

curl_setopt($cp, CURLOPT_FILE, $fp);

curl_setopt($cp, CURLOPT_HEADER, 0);

curl_exec($cp);

curl_close($cp);

fclose($fp);

}

/**

+----------------------------------------------------------

* 下载文件

* 可以指定下载显示的文件名,并自动发送相应的Header信息

* 如果指定了content参数,则下载该参数的内容

+----------------------------------------------------------

* @static

* @access public

+----------------------------------------------------------

* @param string $filename 下载文件名

* @param string $showname 下载显示的文件名

* @param string $content 下载的内容

* @param integer $expire 下载内容浏览器缓存时间

+----------------------------------------------------------

* @return void

+----------------------------------------------------------

* @throws ThinkExecption

+----------------------------------------------------------

*/

static public function download ($filename, $showname='',$content='',$expire=180) {

if(is_file($filename)) {

$length = filesize($filename);

}elseif(is_file(UPLOAD_PATH.$filename)) {

$filename = UPLOAD_PATH.$filename;

$length = filesize($filename);

}elseif($content != '') {

$length = strlen($content);

}else {

throw_exception($filename.L('下载文件不存在!'));

}

if(empty($showname)) {

$showname = $filename;

}

$showname = basename($showname);

if(!empty($filename)) {

$type = mime_content_type($filename);

}else{

$type = "application/octet-stream";

}

//发送Http Header信息 开始下载

header("Pragma: public");

header("Cache-control: max-age=".$expire);

//header('Cache-Control: no-store, no-cache, must-revalidate');

header("Expires: " . gmdate("D, d M Y H:i:s",time()+$expire) . "GMT");

header("Last-Modified: " . gmdate("D, d M Y H:i:s",time()) . "GMT");

header("Content-Disposition: attachment; filename=".$showname);

header("Content-Length: ".$length);

header("Content-type: ".$type);

header('Content-Encoding: none');

header("Content-Transfer-Encoding: binary" );

if($content == '' ) {

readfile($filename);

}else {

echo($content);

}

exit();

}

/**

+----------------------------------------------------------

* 显示HTTP Header 信息

+----------------------------------------------------------

* @return string

+----------------------------------------------------------

*/

static function get_header_info($header='',$echo=true)

{

ob_start();

$headers = getallheaders();

if(!empty($header)) {

$info = $headers[$header];

echo($header.':'.$info."\n"); ;

}else {

foreach($headers as $key=>$val) {

echo("$key:$val\n");

}

}

$output = ob_get_clean();

if ($echo) {

echo (nl2br($output));

}else {

return $output;

}

}

/**

* HTTP Protocol defined status codes

* @param int $num

*/

static function send_http_status($code) {

static $_status = array(

// Informational 1xx

100 => 'Continue',

101 => 'Switching Protocols',

// Success 2xx

200 => 'OK',

201 => 'Created',

202 => 'Accepted',

203 => 'Non-Authoritative Information',

204 => 'No Content',

205 => 'Reset Content',

206 => 'Partial Content',

// Redirection 3xx

300 => 'Multiple Choices',

301 => 'Moved Permanently',

302 => 'Found', // 1.1

303 => 'See Other',

304 => 'Not Modified',

305 => 'Use Proxy',

// 306 is deprecated but reserved

307 => 'Temporary Redirect',

// Client Error 4xx

400 => 'Bad Request',

401 => 'Unauthorized',

402 => 'Payment Required',

403 => 'Forbidden',

404 => 'Not Found',

405 => 'Method Not Allowed',

406 => 'Not Acceptable',

407 => 'Proxy Authentication Required',

408 => 'Request Timeout',

409 => 'Conflict',

410 => 'Gone',

411 => 'Length Required',

412 => 'Precondition Failed',

413 => 'Request Entity Too Large',

414 => 'Request-URI Too Long',

415 => 'Unsupported Media Type',

416 => 'Requested Range Not Satisfiable',

417 => 'Expectation Failed',

// Server Error 5xx

500 => 'Internal Server Error',

501 => 'Not Implemented',

502 => 'Bad Gateway',

503 => 'Service Unavailable',

504 => 'Gateway Timeout',

505 => 'HTTP Version Not Supported',

509 => 'Bandwidth Limit Exceeded'

);

if(array_key_exists($code,$_status)) {

header('HTTP/1.1 '.$code.' '.$_status[$code]);

}

}

}//类定义结束

if( !function_exists ('mime_content_type')) {

/**

+----------------------------------------------------------

* 获取文件的mime_content类型

+----------------------------------------------------------

* @return string

+----------------------------------------------------------

*/

function mime_content_type($filename)

{

static $contentType = array(

'ai' => 'application/postscript',

'aif' => 'audio/x-aiff',

'aifc' => 'audio/x-aiff',

'aiff' => 'audio/x-aiff',

'asc' => 'application/pgp', //changed by skwashd - was text/plain

'asf' => 'video/x-ms-asf',

'asx' => 'video/x-ms-asf',

'au' => 'audio/basic',

'avi' => 'video/x-msvideo',

'bcpio' => 'application/x-bcpio',

'bin' => 'application/octet-stream',

'bmp' => 'image/bmp',

'c' => 'text/plain', // or 'text/x-csrc', //added by skwashd

'cc' => 'text/plain', // or 'text/x-c++src', //added by skwashd

'cs' => 'text/plain', //added by skwashd - for C# src

'cpp' => 'text/x-c++src', //added by skwashd

'cxx' => 'text/x-c++src', //added by skwashd

'cdf' => 'application/x-netcdf',

'class' => 'application/octet-stream',//secure but application/java-class is correct

'com' => 'application/octet-stream',//added by skwashd

'cpio' => 'application/x-cpio',

'cpt' => 'application/mac-compactpro',

'csh' => 'application/x-csh',

'css' => 'text/css',

'csv' => 'text/comma-separated-values',//added by skwashd

'dcr' => 'application/x-director',

'diff' => 'text/diff',

'dir' => 'application/x-director',

'dll' => 'application/octet-stream',

'dms' => 'application/octet-stream',

'doc' => 'application/msword',

'dot' => 'application/msword',//added by skwashd

'dvi' => 'application/x-dvi',

'dxr' => 'application/x-director',

'eps' => 'application/postscript',

'etx' => 'text/x-setext',

'exe' => 'application/octet-stream',

'ez' => 'application/andrew-inset',

'gif' => 'image/gif',

'gtar' => 'application/x-gtar',

'gz' => 'application/x-gzip',

'h' => 'text/plain', // or 'text/x-chdr',//added by skwashd

'h++' => 'text/plain', // or 'text/x-c++hdr', //added by skwashd

'hh' => 'text/plain', // or 'text/x-c++hdr', //added by skwashd

'hpp' => 'text/plain', // or 'text/x-c++hdr', //added by skwashd

'hxx' => 'text/plain', // or 'text/x-c++hdr', //added by skwashd

'hdf' => 'application/x-hdf',

'hqx' => 'application/mac-binhex40',

'htm' => 'text/html',

'html' => 'text/html',

'ice' => 'x-conference/x-cooltalk',

'ics' => 'text/calendar',

'ief' => 'image/ief',

'ifb' => 'text/calendar',

'iges' => 'model/iges',

'igs' => 'model/iges',

'jar' => 'application/x-jar', //added by skwashd - alternative mime type

'java' => 'text/x-java-source', //added by skwashd

'jpe' => 'image/jpeg',

'jpeg' => 'image/jpeg',

'jpg' => 'image/jpeg',

'js' => 'application/x-javascript',

'kar' => 'audio/midi',

'latex' => 'application/x-latex',

'lha' => 'application/octet-stream',

'log' => 'text/plain',

'lzh' => 'application/octet-stream',

'm3u' => 'audio/x-mpegurl',

'man' => 'application/x-troff-man',

'me' => 'application/x-troff-me',

'mesh' => 'model/mesh',

'mid' => 'audio/midi',

'midi' => 'audio/midi',

'mif' => 'application/vnd.mif',

'mov' => 'video/quicktime',

'movie' => 'video/x-sgi-movie',

'mp2' => 'audio/mpeg',

'mp3' => 'audio/mpeg',

'mpe' => 'video/mpeg',

'mpeg' => 'video/mpeg',

'mpg' => 'video/mpeg',

'mpga' => 'audio/mpeg',

'ms' => 'application/x-troff-ms',

'msh' => 'model/mesh',

'mxu' => 'video/vnd.mpegurl',

'nc' => 'application/x-netcdf',

'oda' => 'application/oda',

'patch' => 'text/diff',

'pbm' => 'image/x-portable-bitmap',

'pdb' => 'chemical/x-pdb',

'pdf' => 'application/pdf',

'pgm' => 'image/x-portable-graymap',

'pgn' => 'application/x-chess-pgn',

'pgp' => 'application/pgp',//added by skwashd

'php' => 'application/x-httpd-php',

'php3' => 'application/x-httpd-php3',

'pl' => 'application/x-perl',

'pm' => 'application/x-perl',

'png' => 'image/png',

'pnm' => 'image/x-portable-anymap',

'po' => 'text/plain',

'ppm' => 'image/x-portable-pixmap',

'ppt' => 'application/vnd.ms-powerpoint',

'ps' => 'application/postscript',

'qt' => 'video/quicktime',

'ra' => 'audio/x-realaudio',

'rar'=>'application/octet-stream',

'ram' => 'audio/x-pn-realaudio',

'ras' => 'image/x-cmu-raster',

'rgb' => 'image/x-rgb',

'rm' => 'audio/x-pn-realaudio',

'roff' => 'application/x-troff',

'rpm' => 'audio/x-pn-realaudio-plugin',

'rtf' => 'text/rtf',

'rtx' => 'text/richtext',

'sgm' => 'text/sgml',

'sgml' => 'text/sgml',

'sh' => 'application/x-sh',

'shar' => 'application/x-shar',

'shtml' => 'text/html',

'silo' => 'model/mesh',

'sit' => 'application/x-stuffit',

'skd' => 'application/x-koan',

'skm' => 'application/x-koan',

'skp' => 'application/x-koan',

'skt' => 'application/x-koan',

'smi' => 'application/smil',

'smil' => 'application/smil',

'snd' => 'audio/basic',

'so' => 'application/octet-stream',

'spl' => 'application/x-futuresplash',

'src' => 'application/x-wais-source',

'stc' => 'application/vnd.sun.xml.calc.template',

'std' => 'application/vnd.sun.xml.draw.template',

'sti' => 'application/vnd.sun.xml.impress.template',

'stw' => 'application/vnd.sun.xml.writer.template',

'sv4cpio' => 'application/x-sv4cpio',

'sv4crc' => 'application/x-sv4crc',

'swf' => 'application/x-shockwave-flash',

'sxc' => 'application/vnd.sun.xml.calc',

'sxd' => 'application/vnd.sun.xml.draw',

'sxg' => 'application/vnd.sun.xml.writer.global',

'sxi' => 'application/vnd.sun.xml.impress',

'sxm' => 'application/vnd.sun.xml.math',

'sxw' => 'application/vnd.sun.xml.writer',

't' => 'application/x-troff',

'tar' => 'application/x-tar',

'tcl' => 'application/x-tcl',

'tex' => 'application/x-tex',

'texi' => 'application/x-texinfo',

'texinfo' => 'application/x-texinfo',

'tgz' => 'application/x-gtar',

'tif' => 'image/tiff',

'tiff' => 'image/tiff',

'tr' => 'application/x-troff',

'tsv' => 'text/tab-separated-values',

'txt' => 'text/plain',

'ustar' => 'application/x-ustar',

'vbs' => 'text/plain', //added by skwashd - for obvious reasons

'vcd' => 'application/x-cdlink',

'vcf' => 'text/x-vcard',

'vcs' => 'text/calendar',

'vfb' => 'text/calendar',

'vrml' => 'model/vrml',

'vsd' => 'application/vnd.visio',

'wav' => 'audio/x-wav',

'wax' => 'audio/x-ms-wax',

'wbmp' => 'image/vnd.wap.wbmp',

'wbxml' => 'application/vnd.wap.wbxml',

'wm' => 'video/x-ms-wm',

'wma' => 'audio/x-ms-wma',

'wmd' => 'application/x-ms-wmd',

'wml' => 'text/vnd.wap.wml',

'wmlc' => 'application/vnd.wap.wmlc',

'wmls' => 'text/vnd.wap.wmlscript',

'wmlsc' => 'application/vnd.wap.wmlscriptc',

'wmv' => 'video/x-ms-wmv',

'wmx' => 'video/x-ms-wmx',

'wmz' => 'application/x-ms-wmz',

'wrl' => 'model/vrml',

'wvx' => 'video/x-ms-wvx',

'xbm' => 'image/x-xbitmap',

'xht' => 'application/xhtml+xml',

'xhtml' => 'application/xhtml+xml',

'xls' => 'application/vnd.ms-excel',

'xlt' => 'application/vnd.ms-excel',

'xml' => 'application/xml',

'xpm' => 'image/x-xpixmap',

'xsl' => 'text/xml',

'xwd' => 'image/x-xwindowdump',

'xyz' => 'chemical/x-xyz',

'z' => 'application/x-compress',

'zip' => 'application/zip',

);

$type = strtolower(substr(strrchr($filename, '.'),1));

if(isset($contentType[$type])) {

$mime = $contentType[$type];

}else {

$mime = 'application/octet-stream';

}

return $mime;

}

}

if(!function_exists('image_type_to_extension'))

{

function image_type_to_extension($imagetype)

{

if(empty($imagetype)) return false;

switch($imagetype)

{

case IMAGETYPE_GIF : return '.gif';

case IMAGETYPE_JPEG : return '.jpg';

case IMAGETYPE_PNG : return '.png';

case IMAGETYPE_SWF : return '.swf';

case IMAGETYPE_PSD : return '.psd';

case IMAGETYPE_BMP : return '.bmp';

case IMAGETYPE_TIFF_II : return '.tiff';

case IMAGETYPE_TIFF_MM : return '.tiff';

case IMAGETYPE_JPC : return '.jpc';

case IMAGETYPE_JP2 : return '.jp2';

case IMAGETYPE_JPX : return '.jpf';

case IMAGETYPE_JB2 : return '.jb2';

case IMAGETYPE_SWC : return '.swc';

case IMAGETYPE_IFF : return '.aiff';

case IMAGETYPE_WBMP : return '.wbmp';

case IMAGETYPE_XBM : return '.xbm';

default : return false;

}

}

}

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值