⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cgi_register_parse_cb.3

📁 在 linux平台上的网页编程的模板
💻 3
字号:
.TH cgi_register_parse_cb 3 "12 July 2007" "ClearSilver" "cgi/cgi.h".de Ss.sp.ft CW.nf...de Se.fi.ft P.sp...SH NAMEcgi_register_parse_cb  - Register a parse callback.SH SYNOPSIS.Ss#include <cgi/cgi.h>.Se.SsNEOERR *cgi_register_parse_cb(CGI *cgi, const char *method, const char *ctype,                              void *rock, CGI_PARSE_CB parse_cb);.Se.SH ARGUMENTScgi - a CGI struct.brmethod - the HTTP method you want to handle, or * for all.brctype - the HTTP Content-Type you want to handle, or * for all.brrock - opaque data that we'll pass to your call back.SH DESCRIPTIONThe ClearSilver CGI Kit has built-in functionality to handle the following methods:GET -> doesn't have any data except query string, whichis processed for all methodsPOST w/ application/x-www-form-urlencodedPOST w/ multipart/form-dataprocessed as RFC2388 data into files and HDF (seecgi_filehandle())PUT (any type)The entire data chunk is stored as a file, with metadata in HDF (similar to single files in RFC2388). The data is accessible via cgi_filehandle with NULLfor name.To handle other methods/content types, you have toregister your own parse function.  This isn't necessaryif you aren't expecting any data, and technically HTTPonly allows data on PUT/POST requests (and presumablyuser defined methods).  In particular, if you want toimplement XML-RPC or SOAP, you'll have to register acallback here to grab the XML data chunk.  Usuallyyou'll want to register POST w/ application/xml or POSTw/ text/xml (you either need to register both orregister POST w/ * and check the ctype yourself,remember to nerr_raise(CGIParseNotHandled) if you aren'thandling the POST).In general, your callback should:Find out how much data is available:l = hdf_get_value (cgi->hdf, "CGI.ContentLength", NULL); len = atoi(l);And read/handle all of the data using cgiwrap_read.See the builtin handlers for how this is done.  Notethat cgiwrap_read is not guarunteed to return all ofthe data you request (just like fread(3)) since itmight be reading of a socket.  Sorry.You should be careful when reading the data to watchfor short reads (ie, end of file) and cases where theclient sends you data ad infinitum..SH "RETURN VALUE"None.SH "SEE ALSO".BR cgi_debug_init "(3), "cgi_parse "(3), "cgi_destroy "(3), "cgi_js_escape "(3), "cgi_html_escape_strfunc "(3), "cgi_register_strfuncs "(3), "cgi_output "(3), "parse_rfc2388 "(3), "cgi_url_validate "(3), "open_upload "(3), "cgi_cs_init "(3), "cgi_url_escape_more "(3), "cgi_html_strip_strfunc "(3), "cgi_neo_error "(3), "cgi_redirect "(3), "cgi_filehandle "(3), "cgi_register_parse_cb "(3), "cgi_url_escape "(3), "cgi_init "(3), "cgi_redirect_uri "(3), "cgi_cookie_clear "(3), "cgi_url_unescape "(3), "cgi_vredirect "(3), "cgi_display "(3), "cgi_html_ws_strip "(3), "cgi_error "(3), "cgi_cookie_set "(3), "cgi_text_html_strfunc "(3), "cgi_cookie_authority

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -