home *** CD-ROM | disk | FTP | other *** search
/ Practical Programming in Tcl & Tk (4th Edition) / TCLBOOK4.BIN / pc / exsource.old / 11_7.tcl < prev    next >
Text File  |  2003-04-15  |  1KB  |  48 lines

  1. #
  2. # Example 11-7
  3. # Cgi_Parse and Cgi_Value store query data in the cgi array.
  4. #
  5.  
  6. proc Cgi_Parse {} {
  7.     global cgi cgilist
  8.     catch {unset cgi cgilist}
  9.     set query [Cgi_Query]
  10.     regsub -all {\+} $query { } query
  11.     foreach {name value} [split $query &=] {
  12.         set name [CgiDecode $name]
  13.         if {[info exists cgilist($name)] &&
  14.                 ($cgilist($name) == 1)} {
  15.             # Add second value and create list structure
  16.             set cgi($name) [list $cgi($name) \
  17.                 [Url_Decode $value]]
  18.         } elseif {[info exists cgi($name)]} {
  19.             # Add additional list elements
  20.             lappend cgi($name) [CgiDecode $value]
  21.         } else {
  22.             # Add first value without list structure
  23.             set cgi($name) [CgiDecode $value]
  24.             set cgilist($name) 0                            ;# May need to listify
  25.         }
  26.         incr cgilist($name)
  27.     }
  28.     return [array names cgi]
  29. proc Cgi_Value {key} {
  30.     global cgi
  31.     if {[info exists cgi($key)]} {
  32.         return $cgi($key)
  33.     } else {
  34.         return {}
  35.     }
  36. }
  37. proc Cgi_Length {key} {
  38.     global cgilist
  39.     if {[info exist cgilist($key)]} {
  40.         return $cgilist($key)
  41.     } else {
  42.         return 0
  43.     }
  44. }
  45.  
  46.  
  47.