websFormDefine GoAhead WebServer API GoAhead EMF

Synopsis

Create a GoForm™ procedure.

Prototype

 #include "webs.h"
 
 int websFormDefine(char_t *urlPrefix, 
    void (*formHandler)(webs_t wp, char_t *path, char_t *query)); 

Parameters

wp Web server connection handle.
urlPrefix URL prefix to use when matching URLs for this handler.
formHandler URL handler procedure.

Description

The websFormDefine procedure is used to create a GoForm™ procedure.

It establishes the nominated formHandler procedure as the handler for all URLs that begin with "/goform/ urlPrefix". The GoForm processor

GoForms provide a standard Common Gateway Interface (CGI) implemented as an in-memory forms processor.

GoForms procedures run in-memory without creating a new process for each browser connection. By sharing the address space with the GoAhead WebServer, GoForms procedures can directly access the full request context.

The GoForm handler also automatically decodes and parses all POST and query data for easy access. A convenient API (see websGetVar) permits easy access to CGI variables. In addition to POST and query data, the standard CGI variables are also defined.

GoForm procedures can access the URL path via the path parameter which holds URL segment after the host name and port number. The full POST data or query string is passed in the query variable from conform to the following prototype:

 void myForm(webs_t wp, char_t *path, char_t *query){ websHeader(wp); 
websWrite(wp, "Name %s", websGetVar(wp, "name", "")); 
websWrite(wp, "Age %s", websGetVar(wp, "age", "")); 
websFooter(wp); 
websDone(wp, 200); 
} 

The GoForm procedure is responsible for writing the HTTP header and HTML document contents back to the user's browser. websHeader creates a standard HTTP header with initial HTML tags. websFooter closes the document with a closing HTML tag. Inside the GoForm procedure, websGetVar, websRedirect, websWrite, and websWriteBlock are some of the most useful API calls.

Return Value

Returns 0 if the GoForm procedure is successfully defined, otherwise -1 is returned.

Example

 void myForm(webs_t 
wp, char_t *path, char_t *query) { websHeader(wp); websWrite(wp, "Name is 
%s, Address %s", websGetVar(wp, "name", "")); websDone(wp, 
200); websFooter(wp); } websFormDefine("myForm", myForm); 

Stability Classification

Stable.

See Also

Active Server Pages, JavaScript, URL Handlers, websDone, websFooter, websGetVar, websHeader, websSecurityHandler, websUrlHandlerDefine, websWrite