iliaa Fri Mar 19 10:42:41 2004 EDT Modified files: /php-src NEWS /php-src/ext/standard http_fopen_wrapper.c Log: MFH: Fixed bug #27628 (Simplify the process of making a POST request via stream context). http://cvs.php.net/diff.php/php-src/NEWS?r1=1.1650&r2=1.1651&ty=u Index: php-src/NEWS diff -u php-src/NEWS:1.1650 php-src/NEWS:1.1651 --- php-src/NEWS:1.1650 Thu Mar 18 13:25:22 2004 +++ php-src/NEWS Fri Mar 19 10:40:11 2004 @@ -1,6 +1,8 @@ PHP NEWS ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ?? ????? 2004, PHP 5 Release Candidate 2 +- Fixed bug #27628 (Simplify the process of making a POST request via stream + context). (Ilia) - Fixed bug #27469 (serialize() objects of incomplete class). (Dmitry) - Fixed bug #27457 (handling of numeric indexes in strtr()). (Dmitry) http://cvs.php.net/diff.php/php-src/ext/standard/http_fopen_wrapper.c?r1=1.85&r2=1.86&ty=u Index: php-src/ext/standard/http_fopen_wrapper.c diff -u php-src/ext/standard/http_fopen_wrapper.c:1.85 php-src/ext/standard/http_fopen_wrapper.c:1.86 --- php-src/ext/standard/http_fopen_wrapper.c:1.85 Wed Feb 25 19:13:30 2004 +++ php-src/ext/standard/http_fopen_wrapper.c Fri Mar 19 10:41:26 2004 @@ -18,7 +18,7 @@ | Wez Furlong <[EMAIL PROTECTED]> | +----------------------------------------------------------------------+ */ -/* $Id: http_fopen_wrapper.c,v 1.85 2004/02/26 00:13:30 sniper Exp $ */ +/* $Id: http_fopen_wrapper.c,v 1.86 2004/03/19 15:41:26 iliaa Exp $ */ #include "php.h" #include "php_globals.h" @@ -85,6 +85,8 @@ #define HTTP_HEADER_HOST 2 #define HTTP_HEADER_AUTH 4 #define HTTP_HEADER_FROM 8 +#define HTTP_HEADER_CONTENT_LENGTH 16 +#define HTTP_HEADER_TYPE 32 php_stream *php_stream_url_wrap_http_ex(php_stream_wrapper *wrapper, char *path, char *mode, int options, char **opened_path, php_stream_context *context, int redirect_max, int header_init STREAMS_DC TSRMLS_DC) { @@ -249,6 +251,12 @@ if (strstr(tmp, "authorization:")) { have_header |= HTTP_HEADER_AUTH; } + if (strstr(tmp, "content-length:")) { + have_header |= HTTP_HEADER_CONTENT_LENGTH; + } + if (strstr(tmp, "content-type:")) { + have_header |= HTTP_HEADER_TYPE; + } } efree(tmp); } @@ -323,14 +331,24 @@ } } - php_stream_write(stream, "\r\n", sizeof("\r\n")-1); - /* Request content, such as for POST requests */ if (context && php_stream_context_get_option(context, "http", "content", &tmpzval) == SUCCESS && Z_STRLEN_PP(tmpzval) > 0) { + if (!(have_header & HTTP_HEADER_CONTENT_LENGTH)) { + scratch_len = snprintf(scratch, scratch_len, "Content-Length: %d\r\n", Z_STRLEN_PP(tmpzval)); + php_stream_write(stream, scratch, scratch_len); + } + if (!(have_header & HTTP_HEADER_TYPE)) { + php_stream_write(stream, "Content-Type: application/x-www-form-urlencoded\r\n", + sizeof("Content-Type: application/x-www-form-urlencoded\r\n") - 1); + php_error_docref(NULL TSRMLS_CC, E_NOTICE, "Content-type not specified assuming application/x-www-form-urlencoded"); + } + php_stream_write(stream, "\r\n", sizeof("\r\n")-1); php_stream_write(stream, Z_STRVAL_PP(tmpzval), Z_STRLEN_PP(tmpzval)); php_stream_write(stream, "\r\n\r\n", sizeof("\r\n\r\n")-1); + } else { + php_stream_write(stream, "\r\n", sizeof("\r\n")-1); } location[0] = '\0';
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php