iliaa Fri Feb 7 16:33:36 2003 EDT
Modified files:
/php4/main streams.c
/php4/ext/standard url.c url.h basic_functions.c
Log:
Added get_browser() function. This function can be used to fetch the headers
sent by the server when a request is made for a given URL.
Index: php4/main/streams.c
diff -u php4/main/streams.c:1.143 php4/main/streams.c:1.144
--- php4/main/streams.c:1.143 Thu Jan 30 16:06:34 2003
+++ php4/main/streams.c Fri Feb 7 16:33:35 2003
@@ -20,7 +20,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: streams.c,v 1.143 2003/01/30 21:06:34 sas Exp $ */
+/* $Id: streams.c,v 1.144 2003/02/07 21:33:35 iliaa Exp $ */
#define _GNU_SOURCE
#include "php.h"
@@ -2379,6 +2379,10 @@
path_to_open = path;
wrapper = php_stream_locate_url_wrapper(path, &path_to_open, options
TSRMLS_CC);
+ if (options & STREAM_USE_URL && (!wrapper || !wrapper->is_url)) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "This function may only be
+used against URLs.");
+ return NULL;
+ }
if (wrapper) {
Index: php4/ext/standard/url.c
diff -u php4/ext/standard/url.c:1.62 php4/ext/standard/url.c:1.63
--- php4/ext/standard/url.c:1.62 Tue Dec 31 11:07:56 2002
+++ php4/ext/standard/url.c Fri Feb 7 16:33:35 2003
@@ -15,7 +15,7 @@
| Author: Jim Winstead <[EMAIL PROTECTED]> |
+----------------------------------------------------------------------+
*/
-/* $Id: url.c,v 1.62 2002/12/31 16:07:56 sebastian Exp $ */
+/* $Id: url.c,v 1.63 2003/02/07 21:33:35 iliaa Exp $ */
#include <stdlib.h>
#include <string.h>
@@ -549,6 +549,63 @@
}
*dest = '\0';
return dest - str;
+}
+/* }}} */
+
+/* {{{ proto array get_headers(string url)
+ fetches all the headers sent by the server in response to a HTTP request */
+PHP_FUNCTION(get_headers)
+{
+ char *url, *url_len;
+ php_stream_context *context = NULL;
+ php_stream *stream;
+ zval **prev_val, **hdr = NULL;
+ HashPosition pos;
+ long format = 0;
+
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|l", &url, &url_len,
+&format) == FAILURE) {
+ return;
+ }
+
+ if (!(stream = php_stream_open_wrapper_ex(url, "r", REPORT_ERRORS |
+STREAM_USE_URL | STREAM_ONLY_GET_HEADERS, NULL, context))) {
+ RETURN_FALSE;
+ }
+
+ array_init(return_value);
+
+ zend_hash_internal_pointer_reset_ex(HASH_OF(stream->wrapperdata), &pos);
+ while (zend_hash_get_current_data_ex(HASH_OF(stream->wrapperdata),
+(void**)&hdr, &pos) != FAILURE) {
+ if (!format) {
+no_name_header:
+ add_next_index_stringl(return_value, Z_STRVAL_PP(hdr),
+Z_STRLEN_PP(hdr), 1);
+ } else {
+ char c;
+ char *s, *p;
+
+ if ((p = strchr(Z_STRVAL_PP(hdr), ':'))) {
+ c = *p;
+ *p = '\0';
+ s = p + 1;
+ while (isspace(*s)) {
+ s++;
+ }
+
+ if (zend_hash_find(HASH_OF(return_value),
+Z_STRVAL_PP(hdr), (p - Z_STRVAL_PP(hdr) + 1), (void **) &prev_val) == FAILURE) {
+ add_assoc_stringl_ex(return_value,
+Z_STRVAL_PP(hdr), (p - Z_STRVAL_PP(hdr) + 1), s, (Z_STRLEN_PP(hdr) - (s -
+Z_STRVAL_PP(hdr))), 1);
+ } else { /* some headers may occur more then once,
+therefor we need to remake the string into an array */
+ convert_to_array(*prev_val);
+ add_next_index_stringl(*prev_val, s,
+(Z_STRLEN_PP(hdr) - (s - Z_STRVAL_PP(hdr))), 1);
+ }
+
+ *p = c;
+ } else {
+ goto no_name_header;
+ }
+ }
+ zend_hash_move_forward_ex(HASH_OF(stream->wrapperdata), &pos);
+ }
+
+ php_stream_close(stream);
}
/* }}} */
Index: php4/ext/standard/url.h
diff -u php4/ext/standard/url.h:1.14 php4/ext/standard/url.h:1.15
--- php4/ext/standard/url.h:1.14 Tue Dec 31 11:07:56 2002
+++ php4/ext/standard/url.h Fri Feb 7 16:33:35 2003
@@ -15,7 +15,7 @@
| Author: Jim Winstead <[EMAIL PROTECTED]> |
+----------------------------------------------------------------------+
*/
-/* $Id: url.h,v 1.14 2002/12/31 16:07:56 sebastian Exp $ */
+/* $Id: url.h,v 1.15 2003/02/07 21:33:35 iliaa Exp $ */
#ifndef URL_H
#define URL_H
@@ -43,6 +43,7 @@
PHP_FUNCTION(urldecode);
PHP_FUNCTION(rawurlencode);
PHP_FUNCTION(rawurldecode);
+PHP_FUNCTION(get_headers);
#endif /* URL_H */
Index: php4/ext/standard/basic_functions.c
diff -u php4/ext/standard/basic_functions.c:1.571
php4/ext/standard/basic_functions.c:1.572
--- php4/ext/standard/basic_functions.c:1.571 Wed Feb 5 12:56:08 2003
+++ php4/ext/standard/basic_functions.c Fri Feb 7 16:33:35 2003
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: basic_functions.c,v 1.571 2003/02/05 17:56:08 iliaa Exp $ */
+/* $Id: basic_functions.c,v 1.572 2003/02/07 21:33:35 iliaa Exp $ */
#include "php.h"
#include "php_streams.h"
@@ -682,6 +682,7 @@
PHP_FE(stream_get_meta_data,
NULL)
PHP_FE(stream_register_wrapper,
NULL)
PHP_FE(stream_get_wrappers,
NULL)
+ PHP_FE(get_headers,
+ NULL)
#if HAVE_SYS_TIME_H || defined(PHP_WIN32)
PHP_FE(stream_set_timeout,
NULL)
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php