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.

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(
        
'Response 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
- onprogress: mixed, progress callback
- ondebug: mixed, debug 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,
    
'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_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]])

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

bool http_request()

}}} */

/* {{{ proto long http_request_method_register(string method)

bool http_request_method_unregister(mixed method)

long http_request_method_exists(mixed method)

string http_request_method_name(long method)

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[, string arg_separator]])

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


http_methods.c

HttpResponse

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

Instantiates a new HttpResponse object, which can be used to send
any data/resource/file to an HTTP client with caching and multiple
ranges/resuming support.

NOTE: GZIPping is not implemented yet.

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"!

bool HttpResponse::getCache()

Get current caching setting.

bool HttpResponse::setGzip(bool gzip)

Enable on-thy-fly gzipping of the sent entity. NOT IMPLEMENTED YET.

bool HttpResponse::getGzip()

Get current gzipping setting.

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

Set a custom cache-control header, usually being "private" or "public"; if
$raw is set to true the header will be sent as-is.

string HttpResponse::getCacheControl()

Get current Cache-Control header setting.

bool HttpResponse::setContentType(string content_type)

Set the content-type of the sent entity.

string HttpResponse::getContentType()

Get current Content-Type header setting.

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.

array HttpResponse::getContentDisposition()

Get current Content-Disposition setting.
Will return an associative array like:

array(
'filename' => 'foo.bar',
'inline' => false
)

bool HttpResponse::setETag(string etag)

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

string HttpResponse::getETag()

Get the previously set custom ETag.

void HttpResponse::setThrottleDelay(double seconds)

double HttpResponse::getThrottleDelay()

void HttpResponse::setSendBuffersize(long bytes)

long HttpResponse::getSendBuffersize()

bool HttpResponse::setData(string data)

Set the data to be sent.

string HttpResponse::getData()

Get the previously set data to be sent.

bool HttpResponse::setStream(resource stream)

Set the resource to be sent.

resource HttpResponse::getStream()

Get the previously set resource to be sent.

bool HttpResponse::setFile(string file)

Set the file to be sent.

string HttpResponse::getFile()

Get the previously set file to be sent.

bool HttpResponse::send()

Finally send the entity.

Example:


<?php
$r
= new HttpResponse(true);
$r->setFile('../hidden/contract.pdf');
$r->setContentType('application/pdf');
$r->send();
?>



static HttpMessage HttpMessage::fromString(string raw_message)

Create an HttpMessage object from a string.

HttpMessage

void HttpMessage::__construct([string message])

Instantiate a new HttpMessage object.

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.

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 current set options.

void HttpRequest::unsetOptions()

Unset all options/headers/cookies.

bool HttpRequest::setSslOptions(array options)

Set additional SSL options.

array HttpRequest::getSslOtpions()

Get previously set SSL options.

void HttpRequest::unsetSslOptions()

Unset previously set SSL options.

bool HttpRequest::addHeaders(array headers)

Add request header name/value pairs.

array HttpRequest::getHeaders()

Get previously set request headers.

void HttpRequest::unsetHeaders()

Unset previously set request headers.

bool HttpRequest::addCookies(array cookies)

Add cookies.

array HttpRequest::getCookies()

Get previously set cookies.

void HttpRequest::unsetCookies()

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.

void HttpRequest::unsetQueryData()

Clean the query parameters.
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.

void HttpRequest::unsetPostFields()

Clean POST data entires.
Affects only POST requests.

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

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

array HttpRequest::getPostFiles()

Get all previously added POST files.

void HttpRequest::unsetPostFiles()

Unset the POST files list.
Affects only POST requests.

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.

bool 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');
if (
$r->send()) {
    echo
$r->getResponseBody();
}
?>




Generated at: Wed, 25 May 2005 19:01:02 +0200