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[, string host[, int port]]])

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_expires 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_etaghandler(string data, int mode)

For use with ob_start().

void http_throttle(double sec[, long bytes = 2097152])

Use with http_send() API.

Example:


<?php
// ~ 20 kbyte/s
# http_throttle(1, 20000);
# http_throttle(0.5, 10000);
# http_throttle(0.1, 2000);
http_send_file('document.pdf');
?>



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.

object http_parse_message(string message)

Parses (a) http_message(s) into a simple recursive object structure:


<?php
print_r
(http_parse_message(http_get(URL, array('redirect' => 3)));

stdClass object
(
    [
type] => 2
    
[httpVersion] => 1.1
    
[responseCode] => 200
    
[headers] => Array 
        (
            [
Content-Length] => 3
            
[Server] => Apache
        
)
    [
body]  => Hi!
    [
parentMessage] => stdClass object
    
(
        [
type] => 2
        
[httpVersion] => 1.1
        
[responseCode] => 302
        
[headers] => Array 
            (
                [
Content-Length] => 0
                
[Location] => ...
            )
        [
body]  => 
        [
parentMessage] => ...
    )
)
?>



array http_parse_headers(string header)

array http_get_request_headers(void)

Get a list of incoming HTTP headers.

string http_get_request_body(void)

Get the raw request body (e.g. POST or PUT data).

bool http_match_request_header(string header, string value[, bool match_case = false])

Match an incoming HTTP header.

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
- onprogress: mixed, progress callback

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,
    
'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[, array &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_fields(string url, array data[, array files[, 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.

string http_put_file(string url, string file[, array options[, array &info]])

Performs an HTTP PUT request, uploading file.
Returns the HTTP response as string.
See http_get() for a full list of available options.

string http_put_stream(string url, resource stream[, array options[, array &info]])

Performs an HTTP PUT request, uploading stream.
Returns the HTTP response as string.
See http_get() for a full list of available options.

long http_request_method_register(string method)

Register a custom request method.

bool http_request_method_unregister(mixed method)

Unregister a previously registered custom request method.

long http_request_method_exists(mixed method)

Check if a request method is registered (or available by default).

string http_request_method_name(long method)

Get the literal string representation of a standard or registered request method.

string http_build_query(mixed formdata [, string prefix[, string arg_separator]])

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


http_message_object.c

HttpMessage

void HttpMessage::__construct([string message])

Instantiate a new HttpMessage object.

static HttpMessage HttpMessage::fromString(string raw_message)

Create an HttpMessage object from a string.

string HttpMessage::getBody()

Get the body of the parsed Message.

array HttpMessage::getHeaders()

Get Message Headers.

void HttpMessage::setHeaders(array headers)

Sets new headers.

void HttpMessage::addHeaders(array headers[, bool append = false])

Add headers. If append is true, headers with the same name will be separated, else overwritten.

long HttpMessage::getType()

Get Message Type. (HTTP_MSG_NONE|HTTP_MSG_REQUEST|HTTP_MSG_RESPONSE)

void HttpMessage::setType(long type)

Set Message Type. (HTTP_MSG_NONE|HTTP_MSG_REQUEST|HTTP_MSG_RESPONSE)

long HttpMessage::getResponseCode()

Get the Response Code of the Message.

bool HttpMessage::setResponseCode(long code)

Set the response code of an HTTP Response Message.
Returns false if the Message is not of type HTTP_MSG_RESPONSE,
or if the response code is out of range (100-510).

string HttpMessage::getRequestMethod()

Get the Request Method of the Message.
Returns false if the Message is not of type HTTP_MSG_REQUEST.

bool HttpMessage::setRequestMethod(string method)

Set the Request Method of the HTTP Message.
Returns false if the Message is not of type HTTP_MSG_REQUEST.

string HttpMessage::getRequestUri()

Get the Request URI of the Message.

bool HttpMessage::setRequestUri(string URI)

Set the Request URI of the HTTP Message.
Returns false if the Message is not of type HTTP_MSG_REQUEST,
or if paramtere URI was empty.

string HttpMessage::getHttpVersion()

Get the HTTP Protocol Version of the Message.

bool HttpMessage::setHttpVersion(string version)

Set the HTTP Protocol version of the Message.
Returns false if version is invalid (1.0 and 1.1).

HttpMessage HttpMessage::getParentMessage()

Get parent Message.

bool HttpMessage::send()

Send the Message according to its type as Response or Request.

string HttpMessage::toString([bool include_parent = true])

Get the string representation of the Message.


http_request_object.c

HttpRequest

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

Instantiate a new HttpRequest object which can be used to issue HEAD, GET
and POST (including posting files) HTTP requests.

void HttpRequest::__destruct()

Destroys the HttpRequest object.

bool HttpRequest::setOptions([array options])

Set the request options to use. See http_get() for a full list of available options.

array HttpRequest::getOptions()

Get currently set options.

bool HttpRequest::setSslOptions([array options])

Set SSL options.

bool HttpRequest::addSslOptions(array options)

Set additional SSL options.

array HttpRequest::getSslOtpions()

Get previously set SSL options.

bool HttpRequest::addHeaders(array headers)

Add request header name/value pairs.

bool HttpRequest::setHeaders([array headers])

Set request header name/value pairs.

array HttpRequest::getHeaders()

Get previously set request headers.

bool HttpRequest::setCookies([array cookies])

Set cookies.

bool HttpRequest::addCookies(array cookies)

Add cookies.

array HttpRequest::getCookies()

Get previously set cookies.

bool HttpRequest::setUrl(string url)

Set the request URL.

string HttpRequest::getUrl()

Get the previously set request URL.

bool HttpRequest::setMethod(long request_method)

Set the request methods; one of the HTTP_HEAD, HTTP_GET or
HTTP_POST constants.

long HttpRequest::getMethod()

Get the previously set request method.

bool HttpRequest::setContentType(string content_type)

Set the content type the post request should have.
Use this only if you know what you're doing.

string HttpRequest::getContentType()

Get the previously content type.

bool HttpRequest::setQueryData([mixed query_data])

Set the URL query parameters to use.
Overwrites previously set query parameters.
Affects any request types.

string HttpRequest::getQueryData()

Get the current query data in form of an urlencoded query string.

bool HttpRequest::addQueryData(array query_params)

Add parameters to the query parameter list.
Affects any request type.

bool HttpRequest::addPostFields(array post_data)

Adds POST data entries.
Affects only POST requests.

bool HttpRequest::setPostFields([array post_data])

Set the POST data entries.
Overwrites previously set POST data.
Affects only POST requests.

array HttpRequest::getPostFields()

Get previously set POST data.

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

Add a file to the POST request.
Affects only POST requests.

bool HttpRequest::setPostFiles([array post_files])

Set files to post.
Overwrites previously set post files.
Affects only POST requests.

array HttpRequest::getPostFiles()

Get all previously added POST files.

bool HttpRequest::setPutFile([string file])

Set file to put.
Affects only PUT requests.

string HttpRequest::getPutFile()

Get previously set put file.

array HttpRequest::getResponseData()

Get all response data after the request has been sent.

mixed HttpRequest::getResponseHeader([string name])

Get response header(s) after the request has been sent.

array HttpRequest::getResponseCookie([string name])

Get response cookie(s) after the request has been sent.

string HttpRequest::getResponseBody()

Get the response body after the request has been sent.

int HttpRequest::getResponseCode()

Get the response code after the request has been sent.

array HttpRequest::getResponseInfo([string name])

Get response info after the request has been sent.
See http_get() for a full list of returned info.

HttpMessage HttpRequest::getResponseMessage()

Get the full response as HttpMessage object.

HttpMessage HttpRequest::getRequestMessage()

Get sent HTTP message.

HttpMessage HttpRequest::send()

Send the HTTP request.

GET example:


<?php
$r 
= new HttpRequest('http://example.com/feed.rss'HTTP_GET);
$r->setOptions(array('lastmodified' => filemtime('local.rss')));
$r->addQueryData(array('category' => 3));
try {
    
$r->send();
    if (
$r->getResponseCode() == 200) {
        
file_put_contents('local.rss'$r->getResponseBody());
   }
} catch (
HttpException $ex) {
    echo 
$ex;
}
?>

POST example:


<?php
$r 
= new HttpRequest('http://example.com/form.php'HTTP_POST);
$r->setOptions(array('cookies' => array('lang' => 'de')));
$r->addPostFields(array('user' => 'mike''pass' => 's3c|r3t'));
$r->addPostFile('image''profile.jpg''image/jpeg');
try {
    echo 
$r->send()->getBody();
} catch (
HttpException $ex) {
    echo 
$ex;
}
?>




http_requestpool_object.c

HttpRequestPool

void HttpRequestPool::__construct([HttpRequest request[, ...]])

Instantiate a new HttpRequestPool object. An HttpRequestPool is
able to send several HttpRequests in parallel.

Example:


<?php
try {
    
$pool = new HttpRequestPool(
        new 
HttpRequest('http://www.google.com/'HTTP_HEAD),
        new 
HttpRequest('http://www.php.net/'HTTP_HEAD)
    );
    
$pool->send();
    foreach(
$pool as $request) {
        
printf("%s is %s (%d)\n",
            
$request->getUrl(),
            
$request->getResponseCode() ? 'alive' 'not alive',
            
$request->getResponseCode()
        );
    }
} catch (
HttpException $e) {
    echo 
$e;
}
?>



void HttpRequestPool::__destruct()

Clean up HttpRequestPool object.

void HttpRequestPool::reset()

Detach all attached HttpRequest objects.

bool HttpRequestPool::attach(HttpRequest request)

Attach an HttpRequest object to this HttpRequestPool.
NOTE: set all options prior attaching!

bool HttpRequestPool::detach(HttpRequest request)

Detach an HttpRequest object from this HttpRequestPool.

bool HttpRequestPool::send()

Send all attached HttpRequest objects in parallel.

protected bool HttpRequestPool::socketSend()

Usage:


<?php
    
while ($pool->socketPerform()) {
        
do_something_else();
        if (!
$pool->socketSelect()) {
            die(
'Socket error');
        }
    }
?>



protected bool HttpRequestPool::socketSelect()

See HttpRequestPool::socketPerform().

bool HttpRequestPool::valid()

Implements Iterator::valid().

HttpRequest HttpRequestPool::current()

Implements Iterator::current().

long HttpRequestPool::key()

Implements Iterator::key().

void HttpRequestPool::next()

Implements Iterator::next().

void HttpRequestPool::rewind()

Implements Iterator::rewind().


http_response_object.c

static bool HttpResponse::setHeader(string name, mixed value[, bool replace = true)

static mixed HttpResponse::getHeader([string name])

static bool HttpResponse::setCache(bool cache)

Whether it sould be attempted to cache the entitity.
This will result in necessary caching headers and checks of clients
"If-Modified-Since" and "If-None-Match" headers. If one of those headers
matches a "304 Not Modified" status code will be issued.

NOTE: If you're using sessions, be shure that you set session.cache_limiter
to something more appropriate than "no-cache"!

static bool HttpResponse::getCache()

Get current caching setting.

static bool HttpResponse::setGzip(bool gzip)

Enable on-thy-fly gzipping of the sent entity.

static bool HttpResponse::getGzip()

Get current gzipping setting.

static bool HttpResponse::setCacheControl(string control[, long max_age = 0])

Set a custom cache-control header, usually being "private" or "public";
The max_age parameter controls how long the cache entry is valid on the client side.

static string HttpResponse::getCacheControl()

Get current Cache-Control header setting.

static bool HttpResponse::setContentType(string content_type)

Set the content-type of the sent entity.

static string HttpResponse::getContentType()

Get current Content-Type header setting.

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

Set the Content-Disposition of the sent entity. This setting aims to suggest
the receiveing user agent how to handle the sent entity; usually the client
will show the user a "Save As..." popup.

static string HttpResponse::getContentDisposition()

Get current Content-Disposition setting.

static bool HttpResponse::setETag(string etag)

Set a custom ETag. Use this only if you know what you're doing.

static string HttpResponse::getETag()

Get calculated or previously set custom ETag.

static bool HttpResponse::setLastModified(long timestamp)

Set a custom Last-Modified date.

static HttpResponse::getLastModified()

Get calculated or previously set custom Last-Modified date.

static bool HttpResponse::setThrottleDelay(double seconds)

static double HttpResponse::getThrottleDelay()

static bool HttpResponse::setBufferSize(long bytes)

static long HttpResponse::getBufferSize()

static bool HttpResponse::setData(string data)

Set the data to be sent.

static string HttpResponse::getData()

Get the previously set data to be sent.

static bool HttpResponse::setStream(resource stream)

Set the resource to be sent.

static resource HttpResponse::getStream()

Get the previously set resource to be sent.

static bool HttpResponse::setFile(string file)

Set the file to be sent.

static string HttpResponse::getFile()

Get the previously set file to be sent.

static bool HttpResponse::send([bool clean_ob = true])

Finally send the entity.

Example:


<?php
HttpResponse
::setCache(true);
HttpResponse::setContentType('application/pdf');
HttpResponse::setContentDisposition("$user.pdf"false);
HttpResponse::setFile('sheet.pdf');
HttpResponse::send();
?>



static void HttpResponse::capture()

Capture script output.

Example:


<?php
HttpResponse
::setCache(true);
HttpResponse::capture();
// script follows
// note that you need to call
HttpResponse::send();
// at the end of the script unless 
// you use PHP-5.1 or greater
?>




Generated at: Fri, 26 Aug 2005 11:08:03 +0000