转 PHP Header常用的HTTP协议函数及方法

<?PHP 
    /** 
    * HTTP Protocol defined status codes
    * HTTP协议状态码,调用函数时候只需要将$num赋予一个下表中的已知值就直接会返回状态了。
    * @param int $num
    */ 
    function https($num) { 
        $http = array ( 
 => "HTTP/1.1 100 Continue", 
 => "HTTP/1.1 101 Switching Protocols", 
 => "HTTP/1.1 200 OK", 
 => "HTTP/1.1 201 Created", 
 => "HTTP/1.1 202 Accepted", 
 => "HTTP/1.1 203 Non-Authoritative Information", 
 => "HTTP/1.1 204 No Content", 
 => "HTTP/1.1 205 Reset Content", 
 => "HTTP/1.1 206 Partial Content", 
 => "HTTP/1.1 300 Multiple Choices", 
 => "HTTP/1.1 301 Moved Permanently", 
 => "HTTP/1.1 302 Found", 
 => "HTTP/1.1 303 See Other", 
 => "HTTP/1.1 304 Not Modified", 
 => "HTTP/1.1 305 Use Proxy", 
 => "HTTP/1.1 307 Temporary Redirect", 
 => "HTTP/1.1 400 Bad Request", 
 => "HTTP/1.1 401 Unauthorized", 
 => "HTTP/1.1 402 Payment Required", 
 => "HTTP/1.1 403 Forbidden", 
 => "HTTP/1.1 404 Not Found", 
 => "HTTP/1.1 405 Method Not Allowed", 
 => "HTTP/1.1 406 Not Acceptable", 
 => "HTTP/1.1 407 Proxy Authentication Required", 
 => "HTTP/1.1 408 Request Time-out", 
 => "HTTP/1.1 409 Conflict", 
 => "HTTP/1.1 410 Gone", 
 => "HTTP/1.1 411 Length Required", 
 => "HTTP/1.1 412 Precondition Failed", 
 => "HTTP/1.1 413 Request Entity Too Large", 
 => "HTTP/1.1 414 Request-URI Too Large", 
 => "HTTP/1.1 415 Unsupported Media Type", 
 => "HTTP/1.1 416 Requested range not satisfiable", 
 => "HTTP/1.1 417 Expectation Failed", 
 => "HTTP/1.1 500 Internal Server Error", 
 => "HTTP/1.1 501 Not Implemented", 
 => "HTTP/1.1 502 Bad Gateway", 
 => "HTTP/1.1 503 Service Unavailable", 
 => "HTTP/1.1 504 Gateway Time-out"  
        ); 
        header($http[$num]); 
    };
    
    //200 正常状态
    header('HTTP/1.1 200 OK');

    // 301 永久重定向,记得在后面要加重定向地址 Location:$url
    header('HTTP/1.1 301 Moved Permanently');

    // 重定向,其实就是302 暂时重定向
    header('Location: http://www.maiyoule.com/');

    // 设置页面304 没有修改
    header('HTTP/1.1 304 Not Modified');

    // 显示登录框,
    header('HTTP/1.1 401 Unauthorized');
    header('WWW-Authenticate: Basic realm="登录信息"');
    echo '显示的信息!';

    // 403 禁止访问
    header('HTTP/1.1 403 Forbidden');
     
    // 404 错误
    header('HTTP/1.1 404 Not Found');

    // 500 服务器错误
    header('HTTP/1.1 500 Internal Server Error');
     
    // 3秒后重定向指定地址(也就是刷新到新页面与 <meta http-equiv="refresh" content="10;http://www.maiyoule.com/ /> 相同)
    header('Refresh: 3; url=http://www.maiyoule.com/');
    echo '10后跳转到http://www.maiyoule.com';
     
    // 重写 X-Powered-By 值
    header('X-Powered-By: PHP/5.3.0');
    header('X-Powered-By: Brain/0.6b');
     
    //设置上下文语言
    header('Content-language: en');
     
    // 设置页面最后修改时间(多用于防缓存)
    $time = time() - 60; //建议使用filetime函数来设置页面缓存时间
    header('Last-Modified: '.gmdate('D, d M Y H:i:s', $time).' GMT');

    // 设置内容长度
    header('Content-Length: 39344');
     
    // 设置头文件类型,可以用于流文件或者文件下载
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename="example.zip"'); 
    header('Content-Transfer-Encoding: binary');
    readfile('example.zip');//读取文件到客户端


//禁用页面缓存 header('Cache-Control: no-cache, no-store, max-age=0, must-revalidate'); header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); header('Pragma: no-cache'); //设置页面头信息 header('Content-Type: text/html; charset=iso-8859-1'); header('Content-Type: text/html; charset=utf-8'); header('Content-Type: text/plain'); header('Content-Type: image/jpeg'); header('Content-Type: application/zip'); header('Content-Type: application/pdf'); header('Content-Type: audio/mpeg'); header('Content-Type: application/x-shockwave-flash'); //.... 至于Content-Type 的值 可以去查查 w3c 的文档库,那里很丰富 ?>

 PHP 文件下载代码 收藏

public function downloads($name){
        $name_tmp = explode("_",$name);
        $type = $name_tmp[0];
        $file_time = explode(".",$name_tmp[3]);
        $file_time = $file_time[0];
        $file_date = date("Y/md",$file_time);
        $file_dir = SITE_PATH."/data/uploads/$type/$file_date/";    
        
        if (!file_exists($file_dir.$name)){
            header("Content-type: text/html; charset=utf-8");
            echo "File not found!";
            exit; 
        } else {
            $file = fopen($file_dir.$name,"r"); 
            Header("Content-type: application/octet-stream");
            Header("Accept-Ranges: bytes");
            Header("Accept-Length: ".filesize($file_dir . $name));
            Header("Content-Disposition: attachment; filename=".$name);
            echo fread($file, filesize($file_dir.$name));
            fclose($file);
        }
    }

 

posted @ 2013-02-05 14:31  My Game  阅读(296)  评论(0编辑  收藏  举报