home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 18 REXX / 18-REXX.zip / cgip107.zip / cgiparse.cmd next >
OS/2 REXX Batch file  |  1997-03-15  |  2KB  |  75 lines

  1. /* CGIPARSE 1.0.7, public release 1.0, build 7 */
  2.  
  3. /* Credits where they are due:
  4.  *  
  5.  * This script is created by Sacha Prins, sacha@prins.net
  6.  * 
  7.  * Please think of me when using this code.
  8.  *
  9.  */
  10.  
  11. /*********************************************************************/
  12. CGIParse:PROCEDURE EXPOSE cgi.
  13.  
  14. queryString=''
  15.  
  16. IF getEnv('REQUEST_METHOD') = 'POST' THEN
  17.  DO
  18.     IF getEnv('CONTENT_TYPE') \= 'application/x-www-form-urlencoded' THEN RETURN 1
  19.     j= getEnv('CONTENT_LENGTH')
  20.     IF DATATYPE(j, 'W') \= 1 THEN queryString=''
  21.     ELSE queryString= LINEIN()
  22.  END
  23. ELSE /* GET */
  24. DO
  25.  queryString= getEnv('QUERY_STRING')
  26. END
  27.  
  28. queryString= TRANSLATE(queryString, ' ', '+')
  29.  
  30. DO WHILE LENGTH(queryString) > 0
  31.  varCouple= ''
  32.  PARSE VAR queryString varCouple'&'queryString
  33.  PARSE VAR varCouple varName'='varVal
  34.  IF varName = '' | varVal= '' THEN ITERATE
  35.  varName= 'cgi.' || urlDecode(varName)
  36.  varVal=  urlDecode(varVal)
  37.  IF SYMBOL(varName) = 'BAD' THEN ITERATE
  38.  IF VALUE(varName) \= TRANSLATE(varName) THEN call VALUE varName, VALUE(varName) || '0d'x || varVal
  39.  ELSE call VALUE varName, varVal
  40. END
  41.  
  42. RETURN 0
  43.  
  44. /*********************************************************************/
  45. URLDecode:PROCEDURE EXPOSE cgi.
  46.  
  47. IF ARG()\=1 THEN RETURN ''
  48. line= ARG(1)
  49. lineLen= LENGTH(line)
  50. newLine= ''
  51.  
  52. i=1
  53. DO WHILE i <= lineLen
  54.  c= SUBSTR(line, i, 1)
  55.  IF c \= '%' THEN newLine = newLine || c
  56.  ELSE IF i+2 <= lineLen THEN
  57.                         DO
  58.                            newLine= newLine || x2c(SUBSTR(line, i+1, 2))
  59.                            i=i+2
  60.                         END
  61.  i= i+1
  62. END
  63. RETURN newLine
  64.  
  65.  
  66. /*********************************************************************/
  67. getEnv:PROCEDURE
  68. RETURN VALUE(ARG(1),, 'OS2ENVIRONMENT')
  69.  
  70. /*********************************************************************/
  71. putEnv:PROCEDURE
  72. RETURN VALUE(ARG(1), ARG(2), 'OS2ENVIRONMENT')
  73.  
  74.  
  75.