/* $Id$ */
-#define _WINSOCKAPI_
-#define ZEND_INCLUDE_FULL_WINDOWS_HEADERS
-
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
}
/* }}} */
-/* {{{ proto string http_absolute_uri(string url[, string proto])
+/* {{{ proto 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,
*/
PHP_FUNCTION(http_absolute_uri)
{
- char *url = NULL, *proto = NULL;
- int url_len = 0, proto_len = 0;
+ char *url = NULL, *proto = NULL, *host = NULL;
+ int url_len = 0, proto_len = 0, host_len = 0;
+ long port = 0;
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|s", &url, &url_len, &proto, &proto_len) != SUCCESS) {
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|ssl", &url, &url_len, &proto, &proto_len, &host, &host_len, &port) != SUCCESS) {
RETURN_FALSE;
}
- RETURN_STRING(http_absolute_uri(url, proto), 0);
+ RETURN_STRING(http_absolute_uri_ex(url, url_len, proto, proto_len, host, host_len, port), 0);
}
/* }}} */
}
}
- URI = http_absolute_uri(url, NULL);
+ URI = http_absolute_uri(url);
+
if (query_len) {
snprintf(LOC, HTTP_URI_MAXLEN + sizeof("Location: "), "Location: %s?%s", URI, query);
sprintf(RED, "Redirecting to <a href=\"%s?%s\">%s?%s</a>.\n", URI, query, URI, query);
RETURN_FALSE;
}
- convert_to_string_ex(&zresponse);
+ convert_to_string(zresponse);
MAKE_STD_ZVAL(zbody);
MAKE_STD_ZVAL(zheaders);
header_len = rnrn - header + 2;
}
if (SUCCESS != http_parse_headers(header, header_len, return_value)) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Could not parse HTTP header");
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Could not parse HTTP headers");
zval_dtor(return_value);
RETURN_FALSE;
}
*/
PHP_FUNCTION(http_get_request_headers)
{
- if (ZEND_NUM_ARGS()) {
- WRONG_PARAM_COUNT;
- }
+ NO_ARGS;
array_init(return_value);
http_get_request_headers(return_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
* </pre>
*
* The optional third parameter will be filled with some additional information
* }
* return false;
* }
- *
* if (!http_auth_basic_cb('auth_cb')) {
* die('<h1>Authorization failed</h1>');
* }
* vim600: noet sw=4 ts=4 fdm=marker
* vim<600: noet sw=4 ts=4
*/
+