http_functions.c

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_send_content_type([string content_type = 'application/x-octetstream'])

Sets the content type.

bool http_send_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).

bool http_match_modified([int timestamp[, for_range = false]])

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

bool http_match_etag(string etag[, for_range = false])

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.

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
- resume: int, byte offset to start the download from;
if the server supports ranges
- maxfilesize: int, maximum file size that should be downloaded;
has no effect, if the size of the requested entity is not known
- lastmodified: int, timestamp for If-(Un)Modified-Since header
- timeout: int, seconds the request may take
- connecttimeout: int, seconds the connect may take

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>');
}
?>



string http_build_query(mixed formdata [, string prefix])

Generates a form-encoded query string from an associative array or object.


http_methods.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()

void HTTPi_Request::__construct([string url[, long request_method = HTTP_GET]])

void HTTPi_Request::__destruct()

bool HTTPi_Request::setOptions(array options)

array HTTPi_Request::getOptions()

bool HTTPi_Request::setURL(string url)

string HTTPi_Request::getUrl()

bool HTTPi_Request::setMethod(long request_method)

long HTTPi_Request::getMethod()

bool HTTPi_Request::setContentType(string content_type)

string HTTPi_Request::getContentType()

bool HTTPi_Request::setQueryData(mixed query_data)

string HTTPi_Request::getQueryData()

bool HTTPi_Request::addQueryData(array query_params)

void HTTPi_Request::unsetQueryData()

bool HTTPi_Request::addPostData(array post_data)

bool HTTPi_Request::setPostData(array post_data)

array HTTPi_Request::getPostData()

void HTTPi_Request::unsetPostData()

bool HTTPi_Request::addPostFile(string name, string file[, string content_type = "application/x-octetstream"])

array HTTPi_Request::getPostFiles()

void HTTPi_Request::unsetPostFiles()

array HTTPi_Request::getResponseData()

array HTTPi_Request::getResponseHeaders()

string HTTPi_Request::getResponseBody()

array HTTPi_Request::getResponseInfo()

bool HTTPi_Request::send()


Generated at: Fri, 4 Mar 2005 14:10:16 +0100