123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- program CGITest;
- {$mode delphi}
- uses classes, ezcgi;
- // In the following class you only need to use either DoPost or DoGet
- // depending on what type of CGI request you want to use. If you only
- // are going to be making GET requests that you only need to define
- // and override DoGet and like wise for POST requests.
- type
- TCGIData = class(TEZcgi)
- procedure DoPost; override;
- procedure DoGet; override;
- procedure ShowStuff;
- end;
- var
- cgiStuff : TCGIData;
- // All output from the CGI must first begin with the WriteContent
- // call. This places the passed information and the correct CR's
- // required. In most cases you will always use it as shown below.
- // However if you ever need to return content that isn't standard
- // text/html this allows you to set what that content type is.
- //
- // The PutLine call just passes the information indicated out into
- // the stream for return to the client browser.
- procedure TCGIData.DoGet;
- begin
- WriteContent('text/html');
- PutLine('++++++++++ Using GET +++++++++');
- ShowStuff;
- end;
- procedure TCGIData.DoPost;
- begin
- WriteContent('text/html');
- PutLine('++++++++++ Using POST +++++++++');
- ShowStuff;
- end;
- // I wrote this method so that you can see everything that is passed to
- // and stored by the TEZcgi class. It currently stores all normal CGI
- // as well as everything passed to the CGI by the client. These
- // variables can be accessed via the following properties.
- //
- // Values[Index : string];
- // The Index data can be something like AUTH_TYPE, SCRIPT_NAME, or any
- // standard HTML or CGI environment variable. This can also be the
- // field name of the content being passed in a query string such as
- // "name" found in //URL/CGI/cgiapp?name=bob
- //
- // Another routine is availble GetValue(Index, defaultValue : string);
- // This routine does the same as the property Values except it allows
- // you to set a default value to be returned if no variable of type
- // name index is found.
- // This data is stored in a TStringList so you can retreive it by index
- // as well if you know the index location of the information.
- //
- // The properties for doing this are Names[index : integer] and
- // Variables[index : integer]. Names returns the name of the variable,
- // this would be the data passed in the values or GetValue calls.
- // Instead of returning the value "bob" it returns the value "name". The
- // variables property returns the whole string so using the name example
- // above it would return "name=bob".
- //
- // To determine how many environment variables have been stored you can
- // use the VariableCount property.
- //
- // The following procedure loops through all of the environment variables
- // and prints them back to the client. This is a good CGI example to
- // show you exactly what information you have to work with.
- procedure TCGIData.ShowStuff;
- var
- loop : integer;
- begin
- for loop := 0 to VariableCount - 1 do
- PutLine(Variables[loop] + '<BR>');
- end;
- // what follows is the actual program begin..end.
- // The Create call for the class does all the work of the CGI loading
- // the environment variables.
- // The FName and FEmail data is used by the Error report. If the CGI
- // doesn't work correctly for the user this data is included in an
- // error report that is returned to the user which tells them who to
- // inform and how.
- // The Run command starts processing the CGI request and eventually
- // calls either the DoGet or DoPost depending on the request type.
- // I don't try and trap it but the class does raise an exception called
- // ECGIException when some error is generated.
- begin
- try
- cgiStuff := TCGIData.Create;
- cgiStuff.Name := 'Michael A. Hess'; // replace with your name
- cgiStuff.Email := '[email protected]';// replace with your email
- cgiStuff.Run;
- finally
- cgiStuff.Free;
- end;
- end.
|