header.php.svn-base

来自「PHP 知识管理系统(基于树结构的知识管理系统), 英文原版的PHP源码。」· SVN-BASE 代码 · 共 532 行 · 第 1/2 页

SVN-BASE
532
字号
<?php/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: *//** * HTTP::Header *  * PHP versions 4 and 5 * * @category    HTTP * @package     HTTP_Header * @author      Wolfram Kriesing <wk@visionp.de> * @author      Davey Shafik <davey@php.net> * @author      Michael Wallner <mike@php.net> * @copyright   2003-2005 The Authors * @license     BSD, revised * @version     CVS: $Id$ * @link        http://pear.php.net/package/HTTP_Header *//** * Requires HTTP */require_once 'HTTP.php';/**#@+ * Information Codes */define('HTTP_HEADER_STATUS_100', '100 Continue');define('HTTP_HEADER_STATUS_101', '101 Switching Protocols');define('HTTP_HEADER_STATUS_102', '102 Processing');define('HTTP_HEADER_STATUS_INFORMATIONAL',1);/**#@-*//**#+ * Success Codes */define('HTTP_HEADER_STATUS_200', '200 OK');define('HTTP_HEADER_STATUS_201', '201 Created');define('HTTP_HEADER_STATUS_202', '202 Accepted');define('HTTP_HEADER_STATUS_203', '203 Non-Authoritative Information');define('HTTP_HEADER_STATUS_204', '204 No Content');define('HTTP_HEADER_STATUS_205', '205 Reset Content');define('HTTP_HEADER_STATUS_206', '206 Partial Content');define('HTTP_HEADER_STATUS_207', '207 Multi-Status');define('HTTP_HEADER_STATUS_SUCCESSFUL',2);/**#@-*//**#@+ * Redirection Codes */define('HTTP_HEADER_STATUS_300', '300 Multiple Choices');define('HTTP_HEADER_STATUS_301', '301 Moved Permanently');define('HTTP_HEADER_STATUS_302', '302 Found');define('HTTP_HEADER_STATUS_303', '303 See Other');define('HTTP_HEADER_STATUS_304', '304 Not Modified');define('HTTP_HEADER_STATUS_305', '305 Use Proxy');define('HTTP_HEADER_STATUS_306', '306 (Unused)');define('HTTP_HEADER_STATUS_307', '307 Temporary Redirect');define('HTTP_HEADER_STATUS_REDIRECT',3);/**#@-*//**#@+ * Error Codes */define('HTTP_HEADER_STATUS_400', '400 Bad Request');define('HTTP_HEADER_STATUS_401', '401 Unauthorized');define('HTTP_HEADER_STATUS_402', '402 Payment Granted');define('HTTP_HEADER_STATUS_403', '403 Forbidden');define('HTTP_HEADER_STATUS_404', '404 File Not Found');define('HTTP_HEADER_STATUS_405', '405 Method Not Allowed');define('HTTP_HEADER_STATUS_406', '406 Not Acceptable');define('HTTP_HEADER_STATUS_407', '407 Proxy Authentication Required');define('HTTP_HEADER_STATUS_408', '408 Request Time-out');define('HTTP_HEADER_STATUS_409', '409 Conflict');define('HTTP_HEADER_STATUS_410', '410 Gone');define('HTTP_HEADER_STATUS_411', '411 Length Required');define('HTTP_HEADER_STATUS_412', '412 Precondition Failed');define('HTTP_HEADER_STATUS_413', '413 Request Entity Too Large');define('HTTP_HEADER_STATUS_414', '414 Request-URI Too Large');define('HTTP_HEADER_STATUS_415', '415 Unsupported Media Type');define('HTTP_HEADER_STATUS_416', '416 Requested range not satisfiable');define('HTTP_HEADER_STATUS_417', '417 Expectation Failed');define('HTTP_HEADER_STATUS_422', '422 Unprocessable Entity');define('HTTP_HEADER_STATUS_423', '423 Locked');define('HTTP_HEADER_STATUS_424', '424 Failed Dependency');define('HTTP_HEADER_STATUS_CLIENT_ERROR',4);/**#@-*//**#@+ * Server Errors */define('HTTP_HEADER_STATUS_500', '500 Internal Server Error');define('HTTP_HEADER_STATUS_501', '501 Not Implemented');define('HTTP_HEADER_STATUS_502', '502 Bad Gateway');define('HTTP_HEADER_STATUS_503', '503 Service Unavailable');define('HTTP_HEADER_STATUS_504', '504 Gateway Time-out');define('HTTP_HEADER_STATUS_505', '505 HTTP Version not supported');define('HTTP_HEADER_STATUS_507', '507 Insufficient Storage');define('HTTP_HEADER_STATUS_SERVER_ERROR',5);/**#@-*//** * HTTP_Header *  * @package     HTTP_Header * @category    HTTP * @access      public * @version     $Revision$ */class HTTP_Header extends HTTP{    /**     * Default Headers     *      * The values that are set as default, are the same as PHP sends by default.     *      * @var     array     * @access  private     */    var $_headers = array(        'content-type'  =>  'text/html',        'pragma'        =>  'no-cache',        'cache-control' =>  'no-store, no-cache, must-revalidate, post-check=0, pre-check=0'    );    /**     * HTTP version     *      * @var     string     * @access  private     */    var $_httpVersion = '1.0';    /**     * Constructor     *     * Sets HTTP version.     *      * @access  public     * @return  object  HTTP_Header     */    function HTTP_Header()    {        if (isset($_SERVER['SERVER_PROTOCOL'])) {            $this->setHttpVersion(substr($_SERVER['SERVER_PROTOCOL'], -3));        }    }        /**     * Set HTTP version     *     * @access  public     * @return  bool    Returns true on success or false if version doesn't      *                  match 1.0 or 1.1 (note: 1 will result in 1.0)     * @param   mixed   $version HTTP version, either 1.0 or 1.1     */    function setHttpVersion($version)    {        $version = round((float) $version, 1);        if ($version < 1.0 || $version > 1.1) {            return false;        }        $this->_httpVersion = sprintf('%0.1f', $version);        return true;    }        /**     * Get HTTP version     *     * @access  public     * @return  string     */    function getHttpVersion()    {        return $this->_httpVersion;    }        /**     * Set Header     *      * The default value for the Last-Modified header will be current     * date and atime if $value is omitted.     *      * @access  public     * @return  bool    Returns true on success or false if $key was empty or     *                  $value was not of an scalar type.     * @param   string  $key The name of the header.     * @param   string  $value The value of the header. (NULL to unset header)     */    function setHeader($key, $value = null)    {        if (empty($key) || (isset($value) && !is_scalar($value))) {            return false;        }                $key = strToLower($key);        if ($key == 'last-modified') {            if (!isset($value)) {                $value = HTTP::Date(time());            } elseif (is_numeric($value)) {                $value = HTTP::Date($value);            }        }                if (isset($value)) {            $this->_headers[$key] = $value;        } else {            unset($this->_headers[$key]);        }                return true;    }    /**     * Get Header     *      * If $key is omitted, all stored headers will be returned.     *      * @access  public     * @return  mixed   Returns string value of the requested header,     *                  array values of all headers or false if header $key     *                  is not set.     * @param   string  $key    The name of the header to fetch.     */    function getHeader($key = null)    {        if (!isset($key)) {            return $this->_headers;        }                $key = strToLower($key);                if (!isset($this->_headers[$key])) {            return false;        }                return $this->_headers[$key];    }    /**     * Send Headers     *      * Send out the header that you set via setHeader().     *      * @access  public     * @return  bool    Returns true on success or false if headers are already     *                  sent.     * @param   array   $keys Headers to (not) send, see $include.     * @param   array   $include If true only $keys matching headers will be     *                  sent, if false only header not matching $keys will be     *                  sent.     */    function sendHeaders($keys = array(), $include = true)    {        if (headers_sent()) {            return false;        }                if (count($keys)) {            array_change_key_case($keys, CASE_LOWER);            foreach ($this->_headers as $key => $value) {                if ($include ? in_array($key, $keys) : !in_array($key, $keys)) {                    header($key .': '. $value);                }            }        } else {

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?