' --------------------------------------------------------------------------------------------------------------- ' CGI.INC version 1.0 ' By Nick Ruisi ' Acknowledgements to Kevin O'Brien (Author of CGI4VB) for the idea ' ' '---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- dim pairs (2,256) as string,CgiValue as string,rawp(256) as string, strTitle as string, newBlock$ as string dim strpointer(256) as integer, x as integer,r as integer dim CGI_Accept As String dim CGI_AuthType As String dim CGI_ContentLength As String dim CGI_ContentType As String dim CGI_Cookie As String dim CGI_GatewayInterface As String dim CGI_PathInfo As String dim CGI_PathTranslated As String dim CGI_QueryString As String dim CGI_Referer As String dim CGI_RemoteAddr As String dim CGI_RemoteHost As String dim CGI_RemoteIdent As String dim CGI_RemoteUser As String dim CGI_RequestMethod As String dim CGI_ScriptName As String dim CGI_ServerSoftware As String dim CGI_ServerName As String dim CGI_ServerPort As String dim CGI_ServerProtocol As String dim CGI_UserAgent As String dim lContentLength As Long defint d '-------------------------------------------------------------------------------------------------------------------------------------------------------------------------- sub SendFooter (void) print "</BODY></HTML>" end sub '---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- sub SendB (strData as string) print strData; end sub '--------------------------------------------------------------------------------------------------------------------------------------------------------------------------- sub SendHeader(strTitle as string) print "Status: 200 OK" print "Content-Type:text/html" print chr$(13) print "<!DOCTYPE HTML PUBLIC ";chr$(34);"-//IETF//DTD HTML//EN";chr$(34);">" print "<HTML>" print "<HEAD><TITLE>";strTitle;"</TITLE></HEAD>" print "<BODY>" end sub '----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- function GetCgiValue (Param as string) as string for i = 1 to 256 if pairs(0, i) = Param then GetCgiValue = pairs(1, i) exit function end if next i end function '------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ sub InitCgi(void) CGI_Accept = ENVIRON$("HTTP_ACCEPT") CGI_AuthType = ENVIRON$("AUTH_TYPE") CGI_ContentLength = ENVIRON$("CONTENT_LENGTH") CGI_ContentType = ENVIRON$("CONTENT_TYPE") CGI_Cookie = ENVIRON$("HTTP_COOKIE") CGI_GatewayInterface = ENVIRON$("GATEWAY_INTERFACE") CGI_PathInfo = ENVIRON$("PATH_INFO") CGI_PathTranslated =ENVIRON$("PATH_TRANSLATED") CGI_QueryString = ENVIRON$("QUERY_STRING") CGI_Referer = ENVIRON$("HTTP_REFERER") CGI_RemoteAddr = ENVIRON$("REMOTE_ADDR") CGI_RemoteHost = ENVIRON$("REMOTE_HOST") CGI_RemoteIdent = ENVIRON$("REMOTE_IDENT") CGI_RemoteUser = ENVIRON$("REMOTE_USER") CGI_RequestMethod = ENVIRON$("REQUEST_METHOD") CGI_ScriptName = ENVIRON$("SCRIPT_NAME") CGI_ServerSoftware = ENVIRON$("SERVER_SOFTWARE") CGI_ServerName = ENVIRON$("SERVER_NAME") CGI_ServerPort = ENVIRON$("SERVER_PORT") CGI_ServerProtocol = ENVIRON$("SERVER_PROTOCOL") CGI_UserAgent = ENVIRON$("HTTP_USER_AGENT") lContentLength = VAL(CGI_ContentLength) ' ' ' parse the data sent from the form, extracting fields from the & separator ' if CGI_REQUESTMETHOD = "POST" then ContentLen = VAL(ENVIRON$("CONTENT_LENGTH")) CGI_QUERYSTRING = GET$(ContentLen) end if qslength = len(CGI_QUERYSTRING) x=1 newBlock$ = "" for i = 1 to qslength kar$ = mid$(CGI_QUERYSTRING, i, 1) select case kar$ case "&" rawp(x) = newBlock$ newBlock$ = "" x = x + 1 case "+" newBlock$ = newBlock$ + " " ' substitute space for the plus sign case "%" if mid$(CGI_QUERYSTRING,i,3)="%3A" then newBlock$ = newBlock$ + ":" d=2 elseif mid$(CGI_QUERYSTRING,i,3)="%2F" then newBlock$ = newBlock$ + "/" d=2 end if case else if d>0 then d=d-1:goto 5 newBlock$ = newBlock$ + kar$ 5 end select next i rawp(x) = newBlock$ ' ' plug both sides of the equal sign (name and value) into the pairs array ' for r = 1 to x linelength = len(rawp(r)) for g = 1 to linelength kar$ = Mid$(rawp(r), g, 1) if kar$ = "=" then pairs(0, r) = Mid$(rawp(r), 1, g-1) pairs(1, r) = Mid$(rawp(r), g+1, len(rawp(r))-g) exit for end if next g next r end sub ' ------------------------------------------------------------------------------------------------------------------------------------------------------------------