diff options
author | Zeev Suraski <zeev@php.net> | 1999-05-09 08:48:05 +0000 |
---|---|---|
committer | Zeev Suraski <zeev@php.net> | 1999-05-09 08:48:05 +0000 |
commit | bc415d5a8883bbe5b15c12e9a30f916c8010204a (patch) | |
tree | 216499649825b9005a59c0e3c5b5be67c2092871 /cgi_main.c | |
parent | 91cf2e59c47a30f075fe1c69d17550b956df9865 (diff) | |
download | php-git-bc415d5a8883bbe5b15c12e9a30f916c8010204a.tar.gz |
* Finalizing the PHP version of SAPI. Support POST and cookies among other things.
* Fully implement ISAPI support - POST and cookies among other things.
* Almost completely rewrote phpinfo(). Allow modules to easily display their
information in phpinfo() without modifying phpinfo() itself (prototype for
the module info function was changed, thus the large amount of updated module
files).
* Initial extended SAPI support for Apache, completely untested.
* CGI now uses SAPI fully as well.
Diffstat (limited to 'cgi_main.c')
-rw-r--r-- | cgi_main.c | 37 |
1 files changed, 34 insertions, 3 deletions
diff --git a/cgi_main.c b/cgi_main.c index fa438d6eac..e34d0e7e37 100644 --- a/cgi_main.c +++ b/cgi_main.c @@ -85,6 +85,29 @@ static void sapi_cgi_send_header(sapi_header_struct *sapi_header, void *server_c } +static char *sapi_cgi_read_post(SLS_D) +{ + uint read_bytes=0, tmp_read_bytes; + char *result = (char *) emalloc(SG(request_info).content_length+1); + + while (read_bytes < SG(request_info).content_length) { + tmp_read_bytes = read(0, result+read_bytes, SG(request_info).content_length-read_bytes); + if (tmp_read_bytes<=0) { + break; + } + read_bytes += tmp_read_bytes; + } + result[read_bytes]=0; + return result; +} + + +static char *sapi_cgi_read_cookies(SLS_D) +{ + return getenv("HTTP_COOKIE"); +} + + static sapi_module_struct sapi_module = { "PHP Language", /* name */ @@ -98,6 +121,9 @@ static sapi_module_struct sapi_module = { NULL, /* header handler */ NULL, /* send headers handler */ sapi_cgi_send_header, /* send header handler */ + + sapi_cgi_read_post, /* read POST data */ + sapi_cgi_read_cookies /* read Cookies */ }; @@ -132,15 +158,19 @@ static void php_cgi_usage(char *argv0) static void init_request_info(SLS_D) { - char *request_method = getenv("REQUEST_METHOD"); + char *content_length = getenv("CONTENT_LENGTH"); + SG(request_info).request_method = getenv("REQUEST_METHOD"); SG(request_info).query_string = getenv("QUERY_STRING"); SG(request_info).request_uri = getenv("PATH_INFO"); - if (request_method && !strcmp(request_method, "HEAD")) { + SG(request_info).path_translated = NULL; /* we have to update it later, when we have that information */ + if (SG(request_info).request_method && !strcmp(SG(request_info).request_method, "HEAD")) { SG(request_info).headers_only = 1; } else { SG(request_info).headers_only = 0; } + SG(request_info).content_type = getenv("CONTENT_TYPE"); + SG(request_info).content_length = (content_length?atoi(content_length):0); } @@ -229,6 +259,8 @@ any .htaccess restrictions anywhere on your site you can leave doc_root undefine sapi_globals = ts_resource(sapi_globals_id); #endif + init_request_info(SLS_C); + SG(server_context) = (void *) 1; /* avoid server_context==NULL checks */ CG(extended_info) = 0; if (!cgi) { /* never execute the arguments if you are a CGI */ @@ -322,7 +354,6 @@ any .htaccess restrictions anywhere on your site you can leave doc_root undefine php3_TreatHeaders(); - init_request_info(SLS_C); if (!cgi) { if (!SG(request_info).query_string) { |