http.c

void HTTPi_Response::__construct(bool cache, bool gzip)

bool HTTPi_Response::setCache(bool cache)

bool HTTPi_Response::getCache()

bool HTTPi_Response::setGzip(bool gzip)

bool HTTPi_Response::getGzip()

bool HTTPi_Response::setCacheControl(string control[, bool raw = false])

string HTTPi_Response::getCacheControl()

bool HTTPi::setContentType(string content_type)

string HTTPi_Response::getContentType()

bool HTTPi_Response::setContentDisposition(string filename[, bool inline = false])

array HTTPi_Response::getContentDisposition()

bool HTTPi_Response::setETag(string etag)

string HTTPi_Response::getETag()

bool HTTPi_Response::setData(string data)

string HTTPi_Response::getData()

bool HTTPi_Response::setStream(resource stream)

resource HTTPi_Response::getStream()

bool HTTPi_Response::setFile(string file)

string HTTPi_Response::getFile()

int HTTPi_Response::getSize()

string http_date([int timestamp])

This function returns a valid HTTP date regarding RFC 822/1123 looking like: "Wed, 22 Dec 2004 11:34:47 GMT"

string http_absolute_uri(string url[, string proto])

This function returns an absolute URI constructed from url. If the url is already abolute but a different proto was supplied, only the proto part of the URI will be updated. If url has no path specified, the path of the current REQUEST_URI will be taken. The host will be taken either from the Host HTTP header of the client the SERVER_NAME or just localhost if prior are not available.

Some examples:

url = "page.php"                    => http://www.example.com/current/path/page.php
url = "/page.php"                   => http://www.example.com/page.php
url = "/page.php", proto = "https"  => https://www.example.com/page.php

string http_negotiate_language(array supported[, string default = 'en-US'])

This function negotiates the clients preferred language based on its Accept-Language HTTP header. It returns the negotiated language or the default language if none match.

The qualifier is recognized and languages without qualifier are rated highest.

The supported parameter is expected to be an array having the supported languages as array values.

Example:


<?php
$langs
= array(
        
'en-US',// default
        
'fr',
        
'fr-FR',
        
'de',
        
'de-DE',
        
'de-AT',
        
'de-CH',
);
include
'./langs/'. http_negotiate_language($langs) .'.php';
?>

string http_negotiate_charset(array supported[, string default = 'iso-8859-1'])

This function negotiates the clients preferred charset based on its Accept-Charset HTTP header. It returns the negotiated charset or the default charset if none match.

The qualifier is recognized and charset without qualifier are rated highest.

The supported parameter is expected to be an array having the supported charsets as array values.

Example:


<?php
$charsets
= array(
        
'iso-8859-1', // default
        
'iso-8859-2',
        
'iso-8859-15',
        
'utf-8'
);
$pref = http_negotiate_charset($charsets);
if (!
strcmp($pref, 'iso-8859-1')) {
        
iconv_set_encoding('internal_encoding', 'iso-8859-1');
        
iconv_set_encoding('output_encoding', $pref);
        
ob_start('ob_iconv_handler');
}
?>

bool http_send_status(int status)

Send HTTP status code.

bool http_send_last_modified([int timestamp])

This converts the given timestamp to a valid HTTP date and sends it as "Last-Modified" HTTP header. If timestamp is omitted, current time is sent.

bool http_match_modified([int timestamp])

Matches the given timestamp against the clients "If-Modified-Since" resp. "If-Unmodified-Since" HTTP headers.

bool http_match_etag(string etag)

This matches the given ETag against the clients "If-Match" resp. "If-None-Match" HTTP headers.

bool http_cache_last_modified([int timestamp_or_expires]])

If timestamp_or_exires is greater than 0, it is handled as timestamp and will be sent as date of last modification. If it is 0 or omitted, the current time will be sent as Last-Modified date. If it's negative, it is handled as expiration time in seconds, which means that if the requested last modification date is not between the calculated timespan, the Last-Modified header is updated and the actual body will be sent.

bool http_cache_etag([string etag])

This function attempts to cache the HTTP body based on an ETag, either supplied or generated through calculation of the MD5 checksum of the output (uses output buffering).

If clients "If-None-Match" header matches the supplied/calculated ETag, the body is considered cached on the clients side and a "304 Not Modified" status code is issued.

string ob_httpetaghandler(string data, int mode)

For use with ob_start(). Note that this has to be started as first output buffer. WARNING: Don't use with http_send_*().

void http_redirect([string url[, array params[, bool session,[ bool permanent]]]])

Redirect to a given url. The supplied url will be expanded with http_absolute_uri(), the params array will be treated with http_build_query() and the session identification will be appended if session is true.

Depending on permanent the redirection will be issued with a permanent ("301 Moved Permanently") or a temporary ("302 Found") redirection status code.

To be RFC compliant, "Redirecting to URI." will be displayed, if the client doesn't redirect immediatly.

bool http_send_data(string data)

Sends raw data with support for (multiple) range requests.

bool http_send_file(string file)

Sends a file with support for (multiple) range requests.

bool http_send_stream(resource stream)

Sends an already opened stream with support for (multiple) range requests.

bool http_content_type([string content_type = 'application/x-octetstream'])

Sets the content type.

bool http_content_disposition(string filename[, bool inline = false])

Set the Content Disposition. The Content-Disposition header is very useful if the data actually sent came from a file or something similar, that should be "saved" by the client/user (i.e. by browsers "Save as..." popup window).

string http_chunked_decode(string encoded)

This function decodes a string that was HTTP-chunked encoded. Returns false on failure.

array http_split_response(string http_response)

This function splits an HTTP response into an array with headers and the content body. The returned array may look simliar to the following example:


<?php
array(
0 => array(
'Status' => '200 Ok',
'Content-Type' => 'text/plain',
'Content-Language' => 'en-US'
),
1 => "Hello World!\"
);
?>

array http_parse_headers(string header)

array http_get_request_headers(void)

string http_get(string url[, array options[, array &info]])

Performs an HTTP GET request on the supplied url.

The second parameter is expected to be an associative array where the following keys will be recognized:

- redirect:         int, whether and how many redirects to follow
- unrestrictedauth: bool, whether to continue sending credentials on
redirects to a different host
- proxyhost:        string, proxy host in "host[:port]" format
- proxyport:        int, use another proxy port as specified in proxyhost
- proxyauth:        string, proxy credentials in "user:pass" format
- proxyauthtype:    int, HTTP_AUTH_BASIC and/or HTTP_AUTH_NTLM
- httpauth:         string, http credentials in "user:pass" format
- httpauthtype:     int, HTTP_AUTH_BASIC, DIGEST and/or NTLM
- compress:         bool, whether to allow gzip/deflate content encoding
(defaults to true)
- port:             int, use another port as specified in the url
- referer:          string, the referer to sends
- useragent:        string, the user agent to send
(defaults to PECL::HTTP/version (PHP/version)))
- headers:          array, list of custom headers as associative array
like array("header" => "value")
- cookies:          array, list of cookies as associative array
like array("cookie" => "value")
- cookiestore:      string, path to a file where cookies are/will be stored

The optional third parameter will be filled with some additional information in form af an associative array, if supplied, like the following example:


<?php
array (
'effective_url' => 'http://localhost',
'response_code' => 403,
'total_time' => 0.017,
'namelookup_time' => 0.013,
'connect_time' => 0.014,
'pretransfer_time' => 0.014,
'size_upload' => 0,
'size_download' => 202,
'speed_download' => 11882,
'speed_upload' => 0,
'header_size' => 145,
'request_size' => 62,
'ssl_verifyresult' => 0,
'filetime' => -1,
'content_length_download' => 202,
'content_length_upload' => 0,
'starttransfer_time' => 0.017,
'content_type' => 'text/html; charset=iso-8859-1',
'redirect_time' => 0,
'redirect_count' => 0,
'private' => '',
'http_connectcode' => 0,
'httpauth_avail' => 0,
'proxyauth_avail' => 0,
)
?>

string http_head(string url[, array options[, array &info]])

Performs an HTTP HEAD request on the suppied url. Returns the HTTP response as string. See http_get() for a full list of available options.

string http_post_data(string url, string data[, array options[, &info]])

Performs an HTTP POST request, posting data. Returns the HTTP response as string. See http_get() for a full list of available options.

string http_post_array(string url, array data[, array options[, array &info]])

Performs an HTTP POST request, posting www-form-urlencoded array data. Returns the HTTP response as string. See http_get() for a full list of available options.

bool http_auth_basic(string user, string pass[, string realm = "Restricted"])

Example:


<?php
if (!http_auth_basic('mike', 's3c|r3t')) {
die(
'<h1>Authorization failed!</h1>');
}
?>

bool http_auth_basic_cb(mixed callback[, string realm = "Restricted"])

Example:


<?php
function auth_cb($user, $pass)
{
global
$db;
$query = 'SELECT pass FROM users WHERE user='. $db->quoteSmart($user);
if (
strlen($realpass = $db->getOne($query)) {
return
$pass === $realpass;
}
return
false;
}

if (!
http_auth_basic_cb('auth_cb')) {
die(
'<h1>Authorization failed</h1>');
}
?>


Generated at: Thu, 17 Feb 2005 22:42:18 +0100